zl程序教程

您现在的位置是:首页 >  工具

当前栏目

部署私有Docker Registry

Docker部署 私有 registry
2023-09-11 14:21:18 时间

部署私有Docker Registry

安装部署一个私有的Docker Registry是引入、学习和使用Docker这门技术的必经之路之一。尤其是当Docker被所在组织接受,更多人、项目和产品开始接触和使用Docker时,存储和分发自制的Docker image便成了刚需。

Docker的开发者也一直在致力于改善Registry安装和使用的体验,通过提供官方Registry Image以及Docker Compose工具等来简化Registry的配置。不过在本文中,我们只是利用Docker以及Registry的官方Image来部署Registry,这样更便于全面了解Registry的部署配置细节。

一、环境

这里还是复用以往文章中的Docker环境:

组件名

Ip

版本

Docker Registry Server

192.168.1.212

docker1.13.1

docker  Server

192.168.1.106

Docker version 19.03.11, build 42e35e61f3

本次Registry使用当前最新stable版本:Registry 2.3.0

二、registry搭建

本以为Docker Registry的搭建是何其简单的,甚至简单到通过一行命令就可以完成的。比如我们在Registry Server上执行:

$sudo docker run -d -p 5000:5000 --restart=always --name registry registry:latest
$ docker psCONTAINER ID        IMAGE                                                COMMAND                  CREATED             STATUS              PORTS                    NAMES
22b4515859fb        docker.mirrors.ustc.edu.cn/library/registry:latest   "/entrypoint.sh /e..."   2 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp

Registry container已经跑起来了,其启动日志可以通过:docker logs registry查看。

检出nginx 示例容器

docker pull nginx:alpine

就能下载到基于 alpine 的最新版本的 nginx 服务器镜像, 然后再输入:

docker run \
    --detach \
    --name nginx \
    --publish 80:80 \
    --restart unless-stopped \
    nginx:alpine

我们在192.168.1.212本地给nginx:alpine打一个tag,并尝试将新tag下的image pushRegistry中去:

docker tag nginx:alpine 127.0.0.1:5000/nginx:v1

pushRegistry中:

现在可以上传这个镜像:

docker push 127.0.0.1:5000/nginx:v1

 

现在来浏览 http://127.0.0.1:5000/v2/_catalog  将会看到这样的结果:

{"repositories":["nginx"]}

表示已经有了 nginx 这个镜像, 如果要看这个镜像有什么版本, 需要输入地址 http://127.0.0.1:5000/v2/nginx/tags/list  结果如下:

{"name":"nginx","tags":["v1"]}

 

三、docker  配置

如果要在其它装了 docker 的电脑上获取这个镜像, 或者下载局域网其它 registry 服务器上的镜像,新版本的docker,由于安全策略, 有两个选择:

  1. 配置 HTTPS 证书, 因为是内网分发, 没有必要去折腾证书。
  2. docker 的 /etc/docker/daemon.json 文件, 配置 insecure-registries 选项。
cat > /etc/docker/daemon.json <<EOF

{
    "registry-mirrors":["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"],

"insecure-registries":["192.168.1.212:5000"]

}

EOF

检出镜像

docker pull 192.168.1.212:5000/nginx:v1

使用镜像启动

docker run --detach --name nginx --publish 80:80 --restart unless-stopped 192.168.1.212:5000/nginx:v1