当前位置:首页 > 系统运维
docker 搭建本地 Registry
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2021-04-12 09:25:20  点击量:628  评论:0

1、服务端部署

(1)启动 registry 容器

    这里需要先联网,下载 registry 镜像。当然,如果本地已经存在 registry 镜像,就不需要联网了。

[root@docker-registry ~]# docker run -d -p 5000:5000 -v /myregistry/:/var/lib/registry registry

    其中,“-d”参数是后台启动容器,“-p”参数将容器的 5000 端口映射到 Host 的 5000 端口,而 5000 端口是 registry 的服务端口,“-v”参数将容器的“/var/lib/registry”目录映射到 Host 的“/myregistry”目录,用于存放镜像数据。

(2)开放 5000 端口

[root@docker-registry ~]# firewall-cmd --zone=public --add-port=5000/tcp --permanent
[root@docker-registry ~]# firewall-cmd --reload

2、客户端配置

(1)允许使用 HTTP 协议远程

    由于使用的是 http 协议,需要增加 insecure-registries 配置:

[root@docker-client ~]# vi /etc/docker/daemon.json

    内容如下:

{
        "insecure-registries": ["docker-registry:5000"]
}

    注意,由于我配置了 hosts,因此,使用的是主机名。如果没有配 hosts 的话,需要把“docker-registry”替换成相应的 IP。

(2)重新加载守护进程

[root@docker-client ~]# systemctl daemon-reload
[root@docker-client ~]# systemctl restart docker

(3)测试私有仓库的镜像上传和下载

    如果是联网的情况,可以使用如下命令下载 CentOS7 的镜像:

[root@docker-client ~]# docker pull centos:7

    如果想要把这个已经下载到本地的镜像导出来,可以使用如下命令:

[root@docker-client ~]# docker save centos:7 -o centos.tar

    由于我模拟的是一个无法访问互联网的服务器,所以,事先下载并导出了 centos7 的镜像文件:

[root@docker-client ~]# ls /opt/softwares/centos.tar
/opt/softwares/centos.tar

    通过 docker load 命令导入镜像:

[root@docker-client ~]# docker load -i /opt/softwares/centos.tar

    列出本地主机镜像:

[root@docker-client ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       7         8652b9f0cb4c   4 months ago   204MB

    说明已经成功导入了 CentOS7 镜像。
    通过 docker tag 命令重命名镜像(非必须):

[root@docker-client ~]# docker tag centos:7 docker-registry:5000/centos:7

    列出本地主机镜像:

[root@docker-client ~]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
docker-registry:5000/centos   7         8652b9f0cb4c   4 months ago   204MB
centos                        7         8652b9f0cb4c   4 months ago   204MB

    可以看到,现在本地有两个镜像。其实是一个,因为它们的 image id 是相同的。
    通过 docker push 命令上传镜像:

[root@docker-client ~]# docker push docker-registry:5000/centos:7

    此时,服务端已经有镜像了:

[root@docker-registry ~]# ls /myregistry/
docker

    接下来,清空客户端的本地镜像:

[root@docker-client ~]# docker rmi docker-registry:5000/centos:7 centos:7

    列出本地主机镜像:

[root@docker-client ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

    可以看到,本地已经没有镜像了。
    接下来,通过 docker pull 命令,从服务端下载镜像:

[root@docker-client ~]# docker pull docker-registry:5000/centos:7

    列出本地主机镜像:

[root@docker-client ~]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
docker-registry:5000/centos   7         8652b9f0cb4c   4 months ago   204MB
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting