云网牛站
所在位置:首页 > Linux教程 > 在Fedora 30/29/上安装和配置Docker Registry的方法

在Fedora 30/29/上安装和配置Docker Registry的方法

2019-05-04 21:31:49作者:游俊梧稿源:云网牛站

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

在Fedora 30/29/上安装和配置Docker Registry的方法

还要检查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

 

相关主题

安装Docker UI管理器Portainer的方法

精选文章
热门文章