镜像仓库负责存储,管理和分发镜像,并且提供登入认证能力,建立仓库的索引。
镜像仓库管理多个repositoy,repositoy通过命名来区分。每个repository包含一个或多个镜像,镜像通过镜像名称和标签(tag)来区分。
hub.docker.com
;一个 Registry 中可以存在多个Repository·Repository 可分为“顶层仓库”和“用户仓库”;·用户仓库名称格式为“用户名/仓库名”·每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像一个容器镜像包含了两个部分,一个是元数据,其实就是由 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,仅供内部使用
Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用,例如“部署”到生产环境;
Docker Hub 是 Docker 提供的托管存储库服务,用于查找容器映像并与您的团队共享。
具有以下功能:
(1)个人可以注册私有仓库,能够发布自己的镜像
(2)提供镜像检索能力
(3)提供海量官方和认证组织的镜像
(4)从 GitHub 和 Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub
(5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL)
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多 云服务商都提供了国内镜像加速器服务,例如:
阿里云加速器(点击管理控制台 -> 登录账号(淘宝账号) -> 右侧镜像工具 -> 镜像加速器 -> 复制加速器地址)
网易云加速器地址 https://hub-mirror.c.163.com
百度云加速器地址"https://mirror.baidubce.com"
可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
# 注意如果最外层以及你给有了配置,不要直接覆盖,而是将下面的内容添加,然
后确保 json 的格式正确
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
添加完成后需要重新加载配置,重启 Docker
# 加载配置
sudo systemctl daemon-reload
# 重启 docker
sudo systemctl restart docker
#查看 docker 状态
sudo systemctl status docker
私有镜像仓库则是指部署在公司或组织内部,用于自身应用 Docker 镜像存储、分发的 镜像仓库。在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI/CD 流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。
命令 | 别名 | 功能 |
---|---|---|
docker login | 登入仓库 | |
docker pull | docker image pull | 拉取镜像 |
docker push | docker image push | 推送镜像 |
docker search | 查找镜像 | |
docker logout | 登出仓库 |
docker login [options] [server]
不写server默认登入docker hub
docker pull [options] name:[:tag|@digest]
# 别名
docker image pull
docker push [options] name[:tag]
# 别名
docker image push
在进行push之前要先有自己仓库repositoy
docker tag nginx:1.23.3 你的仓库名:tagname
docker push 你的仓库名:tagname
docker search [options] term
docker logout [server]