【Docker】镜像仓库

🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343

🔥 系列专栏: Docker_秦jh_的博客-CSDN博客

​​​​​

目录

[Docker Registry(镜像仓库)](#Docker Registry(镜像仓库))

[什么是Docker Registry](#什么是Docker Registry)

镜像仓库分类

镜像仓库工作机制

镜像仓库命令

命令清单

[docker login](#docker login)

[docker pull](#docker pull)

[docker push](#docker push)

[docker search](#docker search)

[docker logout](#docker logout)

镜像命令部分

[docker images](#docker images)

[docker image inspect](#docker image inspect)

[docker tag](#docker tag)

容器命令部分

[docker run](#docker run)

[docker ps](#docker ps)

[docker 镜像仓库实战](#docker 镜像仓库实战)

综合实战一:搭建一个nginx服务

基础知识

Web服务器

Nginx

[拉取 Nginx 镜像,启动 Nginx 站点](#拉取 Nginx 镜像,启动 Nginx 站点)

[综合实战二:Docker hub 上创建自己私有仓库](#综合实战二:Docker hub 上创建自己私有仓库)

基础知识

Busybox

创建账号

创建仓库

推送镜像到仓库


前言

    💬 hello! 各位铁子们大家好哇。

今日更新了Docker相关内容

    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

Docker Registry(镜像仓库)

什么是Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力, 建立了仓库的索引。

镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一 个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。

整体视图如下:

  • 镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过 DNS或IP地址来确 定一个镜像仓库如 hub.docker.com;一个 Registry中可以存在多个 Repository·Repository 可分为"顶层仓库"和"用户仓库";·用户仓库名称格式为"用户名/仓库名"·每个仓库可以包含多个Tag(标签),每个标签对应一个镜像
  • Repository: ·由某特定的docker镜像的所有迭代版本组成的镜像仓库
  • 镜像名称(name)+标签(tag):如nginx:latest
  • 认证能力:提供用户注册,登录、登出能力
  • 索引:提供镜像的索引信息,方便检索

一个容器镜像包含了两个部分,一个是元数据,其实就是由dockerfile构建出来的描 述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的 checksum这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面, 就是在一个一个的blob里面,真正占有空间的就是这些blob。

镜像仓库分类

按是否对外开放划分,也是研发人员常说的

(1)公有仓库:像阿里云、dockerhub 等放到公有网络上,不用登录就可以下载镜像, 供大家访问使用

(2)私有仓库:不对外开放,往往位于私有网络,只有公司内部人员可以使用。

按供应商和面向群体划分

(1)sponsor(赞助) registry:第三方的registry,供客户和docker社区版使用

(2)mirror(镜像) registry:第三方的 registry,只让客户使用,例如阿里云必须注册才 能使用

(3)vendor(供应商) registry:由发布 docker镜像的供应商提供的registry,例如像 Google 和Redhat提供了镜像仓库服务

(4)private registry:通过没有防火墙和额外的安全层的私有实体提供的registry,仅供 内部使用

镜像仓库工作机制

  1. 镜像仓库使用流程
  • 通过docker login登录仓库
  • Docker pull 拉取需要的镜像
  • 通过dockerfile或者commit等方式制作完镜像通过docker push上传到仓库
  1. 实际研发中镜像仓库如何使用

Docker Registry 中的镜像通常由开发人员制作,而后推送至"公共"或"私有"Registry上 保存,供其他人员使用,例如"部署"到生产环境;

名词解释

开发环境:开发人员使用的一套环境

测试环境:需求开发完成后,发布到供测试人员进行测试的环境

预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布

生产环境:真正面向客户的环境

  1. 镜像仓库的拉取机制

启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将 从Registry 中下载该镜像并保存到本地;

镜像仓库命令

命令清单

docker login

功能

登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub,

语法

docker login OPTIONS SERVER

关键参数

○ -u :登陆的用户名

○ -p :登陆的密码

样例:docker login -u 用户名 -p 密码

docker pull

功能

从镜像仓库中拉取或者更新指定镜像

语法

docker pull OPTIONS NAME:TAG\|@DIGEST

关键参数

○ -a :拉取所有 tagged 镜像

○ --disable-content-trust :忽略镜像的校验,默认开启

样例:

docker pull nginx:1.23.3

docker push

功能

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

语法

docker push OPTIONS NAME:TAG

关键参数

○ -a :推送所有 tagged 镜像

○ --disable-content-trust :忽略镜像的校验,默认开启

样例:

docker push myapache:v1

功能

从Docker Hub查找镜像

语法

docker search OPTIONS TERM

关键参数

○ --no-trunc :显示完整的镜像描述;

○ -f :列出收藏数不小于指定值的镜像。

样例:

#从 Docker Hub 查找所有镜像名包含 nginx,并且star数大于 10 的镜像

docker search -f stars=10 nginx

docker logout

功能

登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub,

语法

docker logout SERVER

样例

docker logout

镜像命令部分

docker images

功能

列出本地镜像。

语法

docker images OPTIONS REPOSITORY\[:TAG]

关键参数

○ -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

○ --digests :显示镜像的摘要信息;

○ -f :显示满足条件的镜像;

○ --format :指定返回值的模板文件;

○ --no-trunc :显示完整的镜像信息;

○ -q :只显示镜像ID。

样例

#列出本地全部镜像

docker images

#列出本地镜像中REPOSITORY为ubuntu的镜像列表。

docker images ubuntu

docker image inspect

功能

查看镜像详细信息

语法

docker image inspect OPTIONS IMAGE IMAGE...

样例

#查看镜像详细信息

docker images inspect nginx:1.23.3

docker tag

功能

标记本地镜像,将其归入某一仓库。

语法

docker tag SOURCE_IMAGE:TAG TARGET_IMAGE:TAG

样例

docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

容器命令部分

docker run

功能

创建一个新的容器并运行一个命令

语法

docker run OPTIONS IMAGE COMMAND ARG...

关键参数

○ -d: 后台运行容器,并返回容器ID;

○ -i: 以交互模式运行容器,通常与 -t 同时使用;

○ -P: 随机端口映射,容器内部端口随机映射到主机的端口

○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

○ --name="nginx-lb": 为容器指定一个名称;

○ -h "mars": 指定容器的hostname;

○ -e username="ritchie": 设置环境变量;

○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU运行;

○ -m :设置容器使用内存最大值;

○ --network="bridge": 指定容器的网络连接类型;

○ --link=\[\]: 添加链接到另一个容器;

○ --volume , -v: 绑定一个卷

○ --rm :shell退出的时候自动删除容器

样例

#使用docker 镜像nginx:latest 以后台模式启动一个容器,并将容器命名为 mynginx。

docker run --name mynginx -d nginx:latest

#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 80:80 -v /data:/data -d nginx:latest

docker ps

功能

列出容器

语法

docker ps OPTIONS

关键参数

○ -a :显示所有的容器,包括未运行的。

○ -f :根据条件过滤显示的内容。

○ --format :指定返回值的模板文件。如json或者table

○ -l :显示latest的容器。

○ -n :列出最近创建的n个容器。

○ --no-trunc :不截断输出。

○ -q :静默模式,只显示容器编号。

○ -s :显示总的文件大小。

样例

docker ps -a

docker 镜像仓库实战

综合实战一:搭建一个nginx服务

基础知识
Web服务器

Web服务器,一般是指"网站服务器",是指驻留于互联网上某种类型计算机的程序。 Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界 浏览,更可以放置数据文件,让全世界下载。

Web服务器,也称为"WWW服务器"( 英文全写:World Wide Web,翻译成中文:万 维网或环球信息网 ),主要功能是"提供网上信息浏览服务"。 WWW 是Internet(互联 网)的多媒体信息查询工具,是Internet(互联网)上发展起来的服务,也是发展最快 和目前使用最广泛的服务。正是因为有了WWW工具,才使得近十几年来互联网迅速 繁荣发展,用户数量飞速飙升。据最新数据显示,目前全球人口数量达到 76.76 亿人, 其中全球"网民"(互联网用户)达到惊人的43.88亿。

例如百度就是一个web服务器,提供搜索服务

Nginx

Nginx 是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是 一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站 的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

可以理解Nginx是web服务器的一种实现。

  • Web服务器

Nginx 作为 Web 服务器可以向各种浏览器等客户端提供浏览服务,比如我们通过手机、 电脑、平板可以访问百度来实现对web 服务器的访问。

  • 正向代理

由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助VPN来实现,这就 是一个简单的正向代理的例子。这里你能够发现,正向代理"代理"的是客户端,而且客 户端是知道目标的,而目标是不知道客户端是通过VPN访问的。

  • 反向代理

当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的 反向代理,即反向代理"代理"的是服务器端,而且这一个过程对于客户端而言是透明的。

总结:

正向代理:是「客户端」找代理帮忙去访问目标网站(目标网站不知道真实客户端是谁)

反向代理:是「服务器端」用代理来接收外部请求,再转发给内部的真实服务器(客户端不知道背后有多个服务器)

安装

ubuntu 安装

nginx apt install nginx -y

启动 nginx 作为一个网站

1.查看 nginx 是否启动

root@ubuntu1:/data# ps -ef |grep nginx

2.如果没有启动,手动启动 nginx

#手动启动

nginx

3.访问 nginx 首页

4.nginx 调整配置

vim /etc/nginx/sites-available/default

5.首页内容

cat /usr/share/nginx/html/index.html

  1. 停止 nginx,kill master 进程来杀死进程

拉取 Nginx 镜像,启动 Nginx 站点
  1. 拉取 nginx 镜像

我们到 https://hub.docker.com/ 上找到 nginx 镜像

docker pull nginx:1.23.3

  1. 查看本地是否有该镜像

docker images

  1. 运行镜像

docker run --name nginx1 --rm -it -p 80:80 nginx:1.23.3 bash

4.查看我们现在是在容器的 shell 里面,执行 cat /etc/*release*查看操作系统不是 Ubuntu

综合实战二:Docker hub 上创建自己私有仓库

基础知识
Busybox

BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一 些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。 简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也 包含了 Linux 系统的自带的 shell。busybox 是一个集成了一百多个最常用 linux 命令和 工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却 只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。

#Ubuntu 安装

apt install -y busybox

创建账号

进入 https://hub.docker.com/,点击注册按钮,输入注册信息

创建仓库

登录后点击仓库,我们创建一个个人仓库

推送镜像到仓库

拉取 busybox 镜像

docker pull busybox

给镜像打标签

docker tag busybox:latest maxhou/mybusybox:v0.1

此时查看我们多了个镜像

登录,推送镜像到仓库

docker login -u XXX

docker push maxhou/mybusybox:v0.1

在我们的 docker hub 仓库里面查看

退出

docker logout

相关推荐
IT大白鼠22 分钟前
使用 Docker 部署 Kubernetes 集群:容器方式搭建 K8s 环境
docker·容器·kubernetes
leeyi20 小时前
把软件装进不能上网的机房——一套建好了、还没上过战场的交付工程(第101篇)
docker·aigc·agent
YIAN1 天前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
IT大白鼠1 天前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
报错小能手1 天前
Kubernetes入门实战课 3
云原生·容器·kubernetes
小张同学a.2 天前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
NJCloud2 天前
Docker 容器技术入门:部署、核心概念与基础命令
运维·docker·容器
2601_962072332 天前
docker自建rustdesk-server远程桌面
运维·docker·容器
pnoker2 天前
从零部署 IoT DC3:四步快速启动实录
物联网·docker·部署