本文介绍在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
上一篇:Linux学习--第七周
if判断:下一篇
- 1 玩客云刷armbian架设nginx php mysql 及可道私有云总结
- 2 centos安装好mysql但是无法启动问题(Job for mysqld.service failed because the control process exited with error code.)
- 3 Ubuntu缺少libncurses.so.5的解决办法
- 4 Grafana之Gauge和Bar Gauge使用(第十一篇)
- 5 RHEL 8 安装 Oracle 19c 提示缺少 libnsl.so.1
- 6 df空间占用已满,但du查看home目录空间占用却很少
- 7 vim.fault.GenericVmConfigFault
- 8 cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
- 9 linux-kernel – 将设备树中断标志映射到devm_request_irq
- 10 CentOS 7.7 yum方式安装配置Zabbix 4.0 LTS详解(二)
精彩评论