安全起见,不想用 Docker Hub 的私有服务,也不想用 GitHub 的 Docker registry,那么剩下的办法就是自建。挺好,Docker 提供了这方面的内容。
先下载 registry
docker pull registry
然后启动一个 registry 的容器
docker run -d -p 5000:5000 --restart=always --name=registryman -v $PWD/registrydata:/var/lib/registry registry
这样就是搭建完成了。
测试下过程,先下载一个 nginx
docker pull nginx:latest
然后通过 docker images
查看该 nginx 镜像的 image ID
,我这里的 image ID
是 231d40e811cd
,修改该镜像的 tag
docker tag 231d40e811cd server_ip:5000/nginx
将该镜像上传到该私有的 registry
docker tag 231d40e811cd server_ip:5000/nginx
等待完成后即可。
其中需要注意的是,push 是强制 https 的,如果要通过 http 进行 push 的话,不同的系统有不同的处理办法
在 macOS 下
点击 Docker 的图标,进入设置
在 Insecure registries
中输入私有 registry 的地址,如上图,保存重启。
在 Debian 下
修改 /etc/default/docker
,增加一行,如下图
修改 /lib/systemd/system/docker.service
,增加一行,更新一行,如下图
重启服务
sudo systemctl daemon-reload;
sudo service docker restart
有时候会需要一个 web 页面更方便的查看相关的内容,则可以使用 docker registry web
,先拉取
docker pull hyper/docker-registry-web
运行一个 web 的容器
docker run -it -p 8080:8080 --restart=always --name registryWeb --link registryman -e REGISTRY_URL=http://server_ip:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
直接访问即可。
> 可在 Twitter/X 上评论该篇文章或在下面留言(需要有 GitHub 账号)