云网牛站
所在位置:首页 > Linux教程 > 在CentOS 7系统中安装和配置Docker Registry的方法

在CentOS 7系统中安装和配置Docker Registry的方法

2019-02-21 16:18:20作者:游俊梧稿源:云网牛站

本文介绍在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

在CentOS 7系统中安装和配置Docker Registry的方法

确认可以访问端口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

 

相关主题

阿里云服务器CentOS 7 Docker中部署使用gogs搭建git服务器

精选文章
热门文章