一、前言
1、有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
2、本节介绍如何使用本地仓库。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
二、安装运行 docker-registry
sudo docker run -d -p 5000:5000 --restart=always --name registry registry
这将使用官方的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径。例如下面的例子将上传的镜像放到本地的 /opt/data/registry 目录
sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
三、在私有仓库上传、搜索、下载镜像
1、上传
1、sudo docker tag ubuntu:16.04 127.0.0.1:5000/ubuntu:16.04
2、sudo docker push 127.0.0.1:5000/ubuntu:16.04
1、使用 docker tag 将 ubuntu:16.04 这个镜像标记为 127.0.0.1:5000/ubuntu:16.04
2、使用 docker push 上传标记的镜像
2、搜索
用 curl 查看仓库中的镜像
3、下载
先删除已有镜像,再尝试从私有仓库中下载这个镜像
1、sudo docker image rm 127.0.0.1:5000/ubuntu:16.04
2、sudo docker pull 127.0.0.1:5000/ubuntu:16.04
四、注意
1、如果我想在别的服务器推送镜像到本地私有仓库看是否能成功。
本地仓库IP | 远程服务器 |
---|---|
192.168.1.82 | 192.168.1.93 |
2、在远程 服务器上操作 192.168.1.93
1、sudo docker tag ubuntu:18.04 192.168.1.82:5000/ubuntu:18.04
2、sudo docker push 192.168.1.82:5000/ubuntu:18.04
结果:Get https://192.168.1.82:5000/v2/: http: server gave HTTP response to HTTPS client。
这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 HTTPS 访问的私有仓库。
3、设置 /etc/docker/daemon.json
1、适用系统 Ubuntu 16.04+, Debian 8+, centos 7 在远程服务器操作
1.1、修改配置
1、
sudo vim /etc/docker/daemon.json
2、添加 insecure-registries
{
"registry-mirror": [
"https://gccihdib.mirror.aliyuncs.com"
],
"insecure-registries": [
"192.168.1.82:5000"
]
}
3、sudo systemctl restart docker
1.2、上传到私有服务器
1、sudo docker tag registry:latest 192.168.1.82:5000/registry:latest
2、sudo docker push 192.168.1.82:5000/registry:latest
1.3 搜索
curl 192.168.1.82:5000/v2/_catalog
1.4 下载镜像
1、sudo docker image rm 192.168.1.82:5000/registry:latest
2、sudo docker pull 192.168.1.82:5000/registry:latest
1.5、总结
我们可以知道,如果远程服务器想要推送到本地仓库,远程服务器必须修改配置。
五、总结
搭建了一个基础的私有仓库,仅供大家参考,有问题欢迎指出讨论。