本文介绍在Fedora 30/29/28系统上安装和配置Docker Registry的方法,我们将设置一个本地Docker注册表,该注册表只能在公司本地网络/受限访问中访问。
一、安装Docker和docker registry包(docker-distribution) 1、安装Docker参考文章 参考在Fedora 29/Fedora 28系统上安装Docker的步骤。 不要忘记将你的用户帐户添加到安装期间创建的docker组: sudo usermod -aG docker $(whoami) newgrp docker 需要安装Docker Compose请参考在Fedora 29/Fedora 28上安装Docker Compose的方法。 2、安装docker registry包(docker-distribution) docker-distribution包在Fedora存储库中可用,Distribution是一个Docker工具集,用于打包、发送、存储和交付内容: sudo dnf install docker-distribution
二、在Fedora上配置Docker registry Docker registry配置文件位于/etc/docker-distribution/registry/config.yml上,它的格式在YAML中。 如果你需要进行任何修改,请在此处进行修改,示例配置文件如下所示: $ cat /etc/docker-distribution/registry/config.yml version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 从默认配置文件: 1、/var/lib/registry是将存储docker镜像的目录。 2、该服务将绑定到所有网络接口上的5000端口。 如果启用并运行firewalld,请允许防火墙上的5000端口: sudo firewall-cmd --add-port=5000/tcp --permanent sudo firewall-cmd --reload
三、启动docker registry服务 你现在可以启动该服务并将其设置为在启动时启动: sudo systemctl start docker-distribution sudo systemctl enable docker-distribution
还要检查5000端口的响应能力: $ telnet 127.0.0.1 5000 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
四、向Docker Engine添加不安全的注册表 默认情况下,docker使用https连接到docker注册表,但是可能有使用到不安全的注册表,特别是如果你在受信任的网络上,这样就不需要CA签名证书供内部使用,也不需要信任所有docker节点中的自签名证书,以下是将不安全注册表添加到Docker Engine的步骤。 对于CentOS/Fedora/Ubuntu,请编辑/etc/docker/daemon.json文件,例如: cat << EOF | sudo tee /etc/docker/daemon.json { "insecure-registries" : [ "myregistry.local:5000" ] } EOF 然后重启Docker引擎: sudo systemctl restart docker
五、将Docker镜像推送到本地registry 现在registry已准备就绪,你可以开始将docker镜像推送到它,如果没有活动的DNS服务器,请使用/etc/hosts文件将主机名映射到IP地址: $ cat /etc/hosts 192.168.10.20 myregistry.local 我将从Docker hub下载alpine Linux docker镜像并将其推送到我当地的Docker registry: $ docker pull alpine:latest latest: Pulling from library/alpine bdf0201b3a05: Pull complete Digest: sha256:28ef97b8686a0b5399129e9b763... Status: Downloaded newer image for alpine:latest 将image标记为myregistry.local:5000/alpine:latest,这会为现有image创建一个附加标记,当标记的第一部分是主机名和端口时,Docker在推送时将其解释为registry的位置: $ docker tag alpine:latest myregistry.local:5000/alpine:latest 将image推送到运行myregistry.local的本地registry:5000/alpine:latest: $ docker push myregistry.local:5000/alpine:latest The push refers to repository [myregistry.local:5000/alpine] a464c54f93a9: Pushed latest: digest: sha256:5c40b3c27b9f13c873fefb21397... size: 528 如果image上传成功,你应该在最后得到sha256 hash值,推送的images存储在/var/lib/registry/docker/registry/v2/repositories目录下: $ ls /var/lib/registry/docker/registry/v2/repositories alpine 这与你用于推送自定义docker images的方法相同,要在本地registry上下载docker镜像,请使用以下命令: $ docker pull myregistry.local:5000/alpine:latest latest: Pulling from alpine Digest: sha256:5c40b3c27b9f13c873fefb21397... Status: Downloaded newer image for myregistry.local:5000/alpine:latest
相关主题 |