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 | 命令:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] |
这里以镜像名:mtex-admin
为例,标记镜像将其归入某一仓库,再次查看镜像列表
1 | docker images |
能够看见出现了192.168.1.131:5000/mtex-admin
镜像名称,细心点会发现它的镜像ID和mtex-admin
是一样的
也就是说,两个镜像名称都映射到同一个镜像ID上,如何避免这种情况呢?
可以执行tag命令之后,删除原来的旧镜像名称,只保留一个名称映射
也可以在创建镜像时,镜像名称以[私服IP:端口/名称]
命名,不必在执行tag命令
4、上传私服
1 | docker push 192.168.1.131:5000/mtex-admin |
可以看到上传成功了,使用192.168.1.134
试一下拉取镜像
1 | docker pull 192.168.1.131:5000/mtex-admin |
5、配置解析
考虑到记住IP比较麻烦,可以在/etc/hosts
中增加本地仓库的域名解析
1 | echo "192.168.1.131 docker-registry" >> /etc/hosts |
这时候再执行cat /etc/hosts
能够看到,已经增加进去了
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 | 必须要增加在第一行 |
然后重启docker,重启registry
1 | systemctl restart docker.service |
查看docker版本的命令docker -v
,低于1.2的版本可以升级版本,也可以上网寻找解决方法.
最后更新: 2020年05月26日 11:57