docker私服仓库

docker的私服仓库存储不像maven私服有完整独立的应用,它是通过docker获取私服仓库镜像,并根据镜像创建私服仓库容器

说白了,docker的私服仓库的搭建就是拉取镜像、创建容器、上传镜像的过程

宿主机环境IP:192.168.1.131

私服仓库的搭建

1、拉取私服镜像

1
docker pull registry:2

2、启动私服

1
docker run --name registry -tid --privileged=true --restart=always --net=host -v /home/docker/repository:/var/lib/registry registry

这里使用的是V2版本的私服仓库,/var/lib/registry是私服仓库存储上传镜像的路径,把它挂载到宿主机上避免因为容器坏损丢失私服仓库的镜像存储

3、标记镜像

1
2
命令:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
例子:docker tag mtex-admin 192.168.1.131:5000/mtex-admin

这里以镜像名:mtex-admin为例,标记镜像将其归入某一仓库,再次查看镜像列表

1
docker images

能够看见出现了192.168.1.131:5000/mtex-admin镜像名称,细心点会发现它的镜像ID和mtex-admin是一样的
registry-1
也就是说,两个镜像名称都映射到同一个镜像ID上,如何避免这种情况呢?

可以执行tag命令之后,删除原来的旧镜像名称,只保留一个名称映射

也可以在创建镜像时,镜像名称以[私服IP:端口/名称]命名,不必在执行tag命令

4、上传私服

1
docker push 192.168.1.131:5000/mtex-admin

registry-2
可以看到上传成功了,使用192.168.1.134试一下拉取镜像

1
docker pull 192.168.1.131:5000/mtex-admin

registry-3
5、配置解析

考虑到记住IP比较麻烦,可以在/etc/hosts中增加本地仓库的域名解析

1
echo "192.168.1.131 docker-registry" >> /etc/hosts

这时候再执行cat /etc/hosts能够看到,已经增加进去了
registry-4

6、查看私服镜像

可以通过浏览器打开http://192.168.1.131:5000/v2/_catalog查看

7、删除私服镜像

上面已经将私服的镜像内容挂载到宿主机/home/docker/repository路径中,只需要进入对应路径删除镜像即可
路径目录是/home/docker/repository/docker/registry/v2/repositories

常见问题

Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交互时可能会出现以下错误

1
Get https://192.168.1.131:5000/v2/: http: server gave HTTP response to HTTPS client

docker版本1.2以上的,在/etc/docker/daemon.json文件中增加以下内容

1
2
#必须要增加在第一行
{ "insecure-registries":["192.168.1.131:5000"]

然后重启docker,重启registry

1
systemctl restart docker.service

查看docker版本的命令docker -v,低于1.2的版本可以升级版本,也可以上网寻找解决方法.

最后更新: 2020年05月26日 11:57

原始链接: https://midkuro.gitee.io/2020/05/21/docker-registry/

× 请我吃糖~
打赏二维码