Docker(Ⅻ)-Docker 仓库之单机 Docker Registry

Docker 仓库之单机 Docker Registry

  • Docker Registry 作为 Docker 的核心组件之一负责镜像内容的存储与分发,客户端的 docker pull 以及 push 命令都将直接与 registry 进行交互,最初版本的 registry 由Python实现,由于设计初期在安全性,性能以及API的设计上有着诸多的缺陷,该版本在 0.9 之后停止了开发,由新的项目 distribution(新的 docker register 被称为 Distribution)来重新设计并开发下一代 registry,新的项目由 go 语言开发,所有的 API,底层存储方式,系统架构都进行了全面的重新设计已解决上一代 registry 中存在的问题,2016 年 4 月份 rgistry 2.0 正式发布,docker 1.6 版本开始支持 registry 2.0,而八月份随着 docker 1.8 发布,docker hub 正式启用 2.1 版本 registry 全面替代之前版本 registry,新版 registry 对镜像存储格式进行了重新设计并和旧版不兼容,docker 1.5 和之前的版本无法读取 2.0 的镜像,另外,Registry 2.4 版本之后支持了回收站机制,也就是可以删除镜像了,在 2.4 版本之前是无法支持删除镜像的,所以如果你要使用最好是大于 Registry 2.4 版本的,目前最新版本为 2.7.x。

  • 官方文档地址:https://docs.docker.com/registry/

  • 官方 github 地址:https://github.com/docker/distribution

  • 本部分将介绍通过官方提供的 docker registry 镜像来简单搭建一套本地私有仓库环境。

下载docker registry镜像

搭建单机仓库

创建授权使用目录

//创建一个授权使用目录
mkdir -pv /docker/auth

创建用户

//确定工作目录
pwd
/docker

//创建一个用户并生成密码
docker run --entrypoint htpasswd registry -Bbn jack 123456 > auth/htpasswd

验证用户密码

//验证密码
cat auth/htpasswd

jack:$2y$05$L3CrA2dTPKEaMBwVZg9YP.WcZhaLswy.TUo434e0EycEWe5dlQzSO

启动docker registry

//启动
docker run -d -p 5000:5000 --restart=always --name registry1 -v /docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

验证端口和容器

file

测试登录仓库

报错如下

file

解决方法

  • 编辑各 docker 服务器/lib/systemd/system/docker.service 配置文件如下
//确定工作目录
pwd
/lib/systemd/system/docker.service

//编辑修改
vim /lib/systemd/system/docker.service

...省略...
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.26.207:5000
...省略...

//重启docker
systemctl daemon-reload
systemctl restart docker

file

验证个docker服务器登录

  • server1

file

  • server2

file

在Server1登陆后上传镜像

镜像打tag

  • docker tag centos-base:v1 192.168.26.207:5000/jack/centos-base:test

file

上传镜像

  • docker push 192.168.26.207:5000/jack/centos-base:test

file

在Server2下载镜像并启动容器

登录并从docker registry下载镜像

file

  • docker pull 192.168.26.207:5000/jack/centos-base:test

file

验证镜像下载成功

  • docker images

file

从下载的镜像启动容器

  • docker run -d --name docker-registry -p 80:80 192.168.26.207:5000/jack/centos-base:test bash

file

验证容器启动

  • docker ps

file

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注