私有仓库
有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
1、Registry的部署
运行下面命令获取registry镜像
docker pull registry
启动一个容器。默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下
mkdir /registry
docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name luck_registry registry
查看容器情况
root@Docker:/docker_img# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d64be096095f registry "/entrypoint.sh /etc/" 9 seconds ago Up 8 seconds 0.0.0.0:5000->5000/tcp luck_registry
打开浏览器输入http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常,
2、验证
现在我们通过将镜像push到registry来验证一下。 我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库, docker tag luck/mynginx:v3 10.1.250.109:5000/mynginx
查看本地镜像
root@Docker:/docker_img# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
luck/mynginx v3 3fe33a14ac95 53 minutes ago 354.4 MB
10.1.250.109:5000/mynginx latest 3fe33a14ac95 53 minutes ago 354.4 MB
运行docker push将mynginx:v3镜像push到我们的私有仓库中
root@Docker:/docker_img# docker push 10.1.250.109:5000/mynginx
The push refers to a repository [10.1.250.109:5000/mynginx]
230ec9b8e80b: Pushed
82a1c8e27611: Pushed
24ffc279f779: Pushed
fd4d87933a83: Pushed
34e7b85d83e4: Pushed
latest: digest: sha256:9a4673c0f7a90411a9e3674d46c5b6749c5f84605589259d8c1163a9630b855d size: 1367
现在可以查看我们本地/registry目录下已经有了刚推送上来的mynginx:v3
root@Docker:/registry/docker/registry/v2/repositories# pwd
/registry/docker/registry/v2/repositories
root@Docker:/registry/docker/registry/v2/repositories# ll
总用量 12
drwxr-xr-x 3 root root 4096 1月 16 17:04 ./
drwxr-xr-x 4 root root 4096 1月 16 17:04 ../
drwxr-xr-x 5 root root 4096 1月 16 17:05 mynginx/
或者也在浏览器中输入http://10.1.250.109:5000/v2/_catalog
在别的机器上Pull镜像:
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@bogon ~]# docker pull 10.1.250.109:5000/mynginx
Using default tag: latest
Trying to pull repository 10.1.250.109:5000/mynginx ...
latest: Pulling from 10.1.250.109:5000/mynginx
5b46acfd4b04: Pull complete
84155821d6ec: Pull complete
8300122f491f: Pull complete
3c85fa1e83a7: Pull complete
Digest: sha256:9a4673c0f7a90411a9e3674d46c5b6749c5f84605589259d8c1163a9630b855d
Status: Downloaded newer image for 10.1.250.109:5000/mynginx:latest
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
10.1.250.109:5000/mynginx latest 3fe33a14ac95 About an hour ago 354.4 MB
3、可能问题
可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件/etc/default/docker,添加下面的内容,
DOCKER_OPTS="--insecure-registry 10.1.250.109:5000"
然后重启docker后台进程
systemctl restart docker