EchoDemo's Blogs

搭建私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,那么,用户也可以创建一个本地仓库供私人使用。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

Registry的部署

1、镜像下载与启动

docker pull registry

// 这里的 /opt/registry 是我们本地的目录,用于存储上传的镜象,/var/lib/registry是Registry服务默认的保存镜象目录
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

2、镜像运行情况查看

docker ps

打开浏览器输入http://127.0.0.1:5000/v2,正常返回如下数据如下:

{}

上传镜像至私有仓库并验证

创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000。

1、先在本机查看已有的镜像

docker images

2、镜像打标记

假设在客户机上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库。这里的客户端就是服务端。

// 打标记
docker tag hello-world 127.0.0.1:5000/hello-world

// 标记成功之后查看
docker image ls 127.0.0.1:5000/hello-world

3、上传标记镜像

docker push 127.0.0.1:5000/hello-world

4、查看客户端上传的镜像目录

在浏览器中输入http://127.0.0.1:5000/v2/_catalog,正常返回如下数据如下:

{“repositories”:{hello-world}}

5、删除本地标记和镜像

docker rmi hello-world

docker rmi 127.0.0.1:5000/hello-world

6、从私有仓库中获取镜像

docker pull 127.0.0.1:5000/hello-world

存在的问题

可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。我们可以通过Docker的配置选项来取消这个限制。对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirror": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "172.16.213.230:5000"
  ]
}

添加完成,重启docker服务才能生效。

🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------