本文介绍在CentOS 7系统中安装和配置Docker Registry(docker注册表)的方法。
简介 Docker registry是一个存储和内容传送系统,它包含命名的Docker镜像,可以使用不同的标记版本,使用Docker的用户使用docker push和docker pull命令与注册表进行交互。
一、安装Docker Registry包(docker-distribution) CentOS 7上的docker-distribution软件包可在extras资源库中找到,如果在CentOS 7系统上禁用它,你需要启用它: $ sudo yum -y update $ sudo yum -y install docker-distribution
二、配置Docker registry Docker registry配置文件位于/etc/docker-distribution/registry/config.yml上,它的格式在YAML中,如果你需要进行任何修改,请在此处进行修改,示例配置文件如下所示: version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 从默认配置文件: /var/lib/registry是将存储docker镜像的目录。 该服务将绑定到所有网络接口上的端口5000。 如果启用了SELinux,则可能会遇到使用端口5000的问题,如果遇到问题,请考虑禁用SELinux或将其置于许可模式,可以参考在RHEL 8/CentOS 8系统中禁用SELinux的方法。 如果启用并运行firewalld,请允许防火墙上的端口: # firewall-cmd --add-port=5000/tcp --permanent # firewall-cmd --reload
三、启动docker registry服务 你现在可以启动该服务并将其设置为在启动时启动: # systemctl start docker-distribution # systemctl enable docker-distribution 确认docker-distribution服务正在运行: # systemctl status docker-distribution
确认可以访问端口5000: # telnet 127.0.0.1 5000 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
四、将不安全的Registry添加到Docker引擎 默认情况下,docker使用https连接到docker registry,但是可能有用例使用不安全的注册表,特别是如果你在受信任的网络上,这样就不需要CA签名证书供内部使用,也不需要信任所有docker节点中的自签名证书,以下是将不安全注册表添加到Docker Engine的步骤。 对于Ubuntu Xenial系统,编辑/etc/docker/daemon.json并更新密钥“insecure-registries”。例如: { "insecure-registries" : ["myregistry.local:5000"] } 对于CentOS 7系统,编辑文件/etc/docker/daemon.json,例如: { "insecure-registries" : ["myregistry.local:5000"] } 对于Ubuntu trusty系统,编辑文件/etc/default/docker并更新DOCKER_OPTS,例如: DOCKER_OPTS='--insecure-registry myregistry.local:5000' 然后重启Docker引擎: # systemctl restart docker
五、将Docker images推送到本地registry 现在registry已准备就绪,你可以开始将docker images推送到它,如果没有活动的DNS服务器,请使用/etc/hosts文件将主机名映射到IP地址: # cat /etc/hosts 192.168.1.23 myregistry.local 我将从Docker hub下载ubuntu:16.04 docker镜像并将其推送到我当地的Docker registry: # docker pull ubuntu:16.04 将图像标记为myregistry.local:5000/ubuntu:16.04,这会为现有图像创建一个附加标记,当标记的第一部分是主机名和端口时,Docker在推送时将其解释为registry的位置: # docker tag ubuntu:16.04 myregistry.local:5000/ubuntu:16.04 将映像推送到运行myregistry.local:5000/ubuntu:16的本地registry: # docker push myregistry.local:5000/ubuntu:16.04 The push refers to repository [myregistry.local:5000/ubuntu] db584c622b50: Pushed 52a7ea2bb533: Pushed 52f389ea437e: Pushed 88888b9b1b5b: Pushed a94e0d5a7c40: Pushed 16.04: digest: sha256:52286464db54577a128fa1b1aa3c115 size: 1357 如果image上传成功,你应该在最后得到sha256哈希值,推送的images存储在/var/lib/registry/docker/registry/v2/repositories目录下: # ls /var/lib/registry/docker/registry/v2/repositories ubuntu 这与你用于推送自定义custom docker images的方法相同,要在本地注册表上下载docker镜像,请使用以下命令: # docker pull registry-hostname:500/image:tag 例如: # docker pull myregistry.local:5000/ubuntu:16.04
相关主题 |