原创

手把手教你搭建Docker私有仓库

机器上都配好yum源,安装好docker,设置好docker加速器。

Docker客户端:xx.xx.xx.xx;Docker私有仓库服务器:xx.xx.xx.xx

1.在服务端xx.xx.xx.xx上拉取仓库镜像:registry

[root@localhost ~]# docker pull registry
2.在服务端xx.xx.xx.xx运行docker私有仓库

[root@localhost ~]# docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
如果成功执行,则表示我们的docker私有仓库搭建成功。

下面对这条命令的部分内容做下说明。

/registry表示宿主机目录,该目录如果不存在会自动创建。

docker -v 宿主机目录:容器目录

在网上看到的解释:

把宿主机的目录挂载到容器中

或者

把docker 容器中某目录的数据 加载到 宿主机的某个目录

这样做的目的是为了防止docker私有仓库这个容器被删除时,仓库里的镜像也会被删除。

3.在客户端制作镜像

以hello-world为例,先把它拉取下来

[root@localhost ~]# docker pull hello-world
给hello-world镜像打个tag,表示新的版本

[root@localhost ~]# docker tag hello-world xx.xx.xx.xx:5000/hello-world:latest
4.将新的hello-world镜像上传到私有仓库

[root@localhost ~]# docker push xx.xx.xx.xx:5000/hello-world:latest

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

将下面的代码放进去保存并退出。
最终如下所示:

{
        "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
}

依次执行下面两条命令,重新启动docker:

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

再次执行推送命令:

[root@localhost ~]# docker push xx.xx.xx.xx:5000/hello-world:latest
5.在私有仓库xx.xx.xx.xx查看上传的镜像

[root@localhost repositories]# ls /registry/docker/registry/v2/repositories
或者在客户端执行以下命令查看:

[root@localhost ~]# curl http://xx.xx.xx.xx:5000/v2/_catalog
会输出:

{"repositories":["hello-world"]}

好,大功告成。

正文到此结束
Loading...