目录
1.1、在dockerhub下载私有仓库registry容器
1.3、建立本地的私有仓库挂载目录,并运行私有仓库的容器,配置好映射的ip端口和挂载的目录、容器名
2.4、在外网主机上访问192.168.0.131映射的公网地址,查看到镜像
前言:
在生产项目中,有时候公司内部的docker镜像是我们自己通过dockerfile定制的,有时候方便pull到容器的镜像,但是又不想把容器的镜像放在docker hub公有仓库上面,泄漏企业的信息,那么私有仓库是我们最好的选择!
一、配置好私有仓库的环境
1.1、在dockerhub下载私有仓库registry容器
[root@docker-test ~]# docker pull registry
1.2、查看下载到的registry容器
[root@docker-test ~]# docker images
1.3、建立本地的私有仓库挂载目录,并运行私有仓库的容器,配置好映射的ip端口和挂载的目录、容器名
[root@docker-test ~]# mkdir -p /data/docker/registry
[root@docker-test ~]# docker run -itd -p 192.168.0.131:5000:5000 -v /data/docker/registry:/var/lib/registry --restart=always --name registry registry:latest
参数说明:
-itd:开启交互模式,分配一个伪终端,以后台方式运行
-p:把容器的5000端口映射到宿主机指定IP的5000端口上
-v:把容器的/var/lib/registry目录映射到宿主机的/data/docker/registry目录,/var/lib/registry是容器中存放镜像文件的目录,来实现数据的持久化
--restart=always:重启策略,容器异常退出会自动重启容器
--name:指定容器的名称为registry
(宿主主机内网ip:192.168.0.131 映射外网ip: 163.177.111.155)
1.4、查看仓库中的镜像,初始为空
[root@docker-test ~]# curl http://192.168.0.131:5000/v2/_catalog
二、配置好私有仓库的配置文件,上传镜像到私有仓库
2.1、修改配置文件,添加私有仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.0.131:5000"]
}
##注:这里是设置为指定为内网地址
2.2、将之前建好的镜像打个标签上传到私有仓库
[root@docker-test ~]# docker tag nginx1.15.7p:latest 192.168.0.131:5000/nginx1.15.7p:v1
[root@docker-test ~]# docker images
(注:可本地或其它主机,可访问到私有仓库主机即可,这里为本地)
参数说明:
tag:标记本地镜像,将其归于某一个仓库
nginx1.15.7p:latest是源镜像和标记信息
192.168.0.131:5000/nginx1.15.7p:v1是目标镜像,包含私有仓库的IP和端口
2.3、镜像上传
[root@docker-test ~]# docker push 192.168.0.131:5000/nginx1.15.7p:v1
##注:以上是为私有仓库本机操作上传镜像到私有仓库,如果是外网的主机上传到私有仓库,要修改etc/docker/daemon.json里的ip为公网163.177.111.155
2.4、在外网主机上访问192.168.0.131映射的公网地址,查看到镜像
[root@sg~]# curl http://163.177.111.155:5000/v2/_catalog
2.5、在外网主机列出私有仓库镜像标签
[root@sg ~]# curl http://163.177.111.155:5000/v2/nginx1.15.7p/tags/list
{"name":"nginx1.15.7p","tags":["v1"]}
2.6、外网主机修改json文件指向私有仓库的主机
[root@sg ~]# vim /etc/docker/daemon.json
{ "insecure-registries": ["163.177.111.155:5000"]}
2.7、外网远程下载的内网私有仓库的镜像
[root@sg ~]# docker pull 163.177.111.155:5000/nginx1.15.7p:v1