我们都知道互联网上的公共Docker仓库很多,大家都可以在互联网上拥有一个自己的私人仓库,但是有些时候需要内网使用,需要在内网搭建私有化仓库,这样就不得不提到Docker私有仓库Harbor,虽然说它功能强大,但是如果我们只是一个简单场景需要,就没必要部署Harbor了。
其实Docker官方就提供了一个工具docker-registry,可以让大家简易的构建一个私有的仓库,不仅操作简单,部署也更加方便。
本文基于RockyLinux8.8系统,本机测试的IP为10.10.10.161。
1、安装依赖
1 |
dnf install yum-utils |
2、添加docker源(以下源任选其一)
docker-ce官方源
1 |
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
docker-ce阿里源(推荐)
1 |
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
3、安装docker
1 |
dnf install docker-ce-24.0.1 docker-ce-cli-24.0.1 containerd.io-1.6.21 docker-ce-rootless-extras-24.0.1 |
注意:我这里指定了docker的版本,如不指定直接install docker-ce即可。
4、配置仓库地址
因为docker默认不允许非HTTPS方式推送镜像,所以我们需要修改/etc/docker/daemon.json配置文件。
1 2 3 4 5 6 7 8 9 10 11 12 |
cat >> /etc/docker/daemon.json << EOF { "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://docker.nju.edu.cn" ], "insecure-registries": [ "10.10.10.161:5000" ] } EOF |
5、启动服务
1 2 3 |
systemctl daemon-reload systemctl enable docker systemctl restart docker |
6、安装docker-registry
我这里使用registry2版本,启动私有仓库,-v参数指定了上传的镜像文件存放在/data/registry目录
1 |
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always --name registry registry:2 |
Unable to find image 'registry:2' locally
2: Pulling from library/registry
8a49fdb3b6a5: Pull complete
58116d8bf569: Pull complete
4cb4a93be51c: Pull complete
cbdeff65a266: Pull complete
6b102b34ed3d: Pull complete
Digest: sha256:20d084723c951e377e1a2a5b3df316173a845e300d57ccdd8ae3ab2da3439746
Status: Downloaded newer image for registry:2
bf7b7103fde12a42f4b521571934cdb23447e672b48ddcecb4205dcb2b1c39ec
7、在私有仓库上传镜像
为了演示效果,我这里首先pull一个busybox镜像
1 |
docker pull busybox:latest |
latest: Pulling from library/busybox
325d69979d33: Pull complete
Digest: sha256:560af6915bfc8d7630e50e212e08242d37b63bd5c1ccf9bd4acccf116e262d5b
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
docker tag来标记这个镜像,然后推送它到私有仓库
1 |
docker tag busybox:latest 10.10.10.161:5000/busybox:latest |
1 |
docker push 10.10.10.161:5000/busybox:latest |
8、使用curl查看私有仓库中的镜像
1 |
curl 10.10.10.161:5000/v2/_catalog |
此时可以看到{"repositories":["busybox"]},表示镜像已经成功上传了
9、在私有仓库下载镜像
删除images中的镜像,再尝试从私有仓库中下载这个镜像
1 |
docker rmi busybox:latest |
1 |
docker rmi 10.10.10.161:5000/busybox:latest |
1 |
docker pull 10.10.10.161:5000/busybox:latest |
原文链接:Docker搭建简易私有化仓库,转载请注明来源!