搭建一个本地私有docker容器仓库,本机或局域网内其他机器访问本地私有仓库,从而在大量部署的时候,可以非常快的拉取镜像
我们准备两台机器,一台作为仓库,ip为10.7.32.27,他可以往仓库里面放镜像,也可以拖镜像
另外一台ip为10.41.85.41,他也可以往仓库里面放镜像,也可以拖镜像。
在需要构建仓库的机器10.7.32.27,先拉取registry镜像
docker pull registry
- 启动registry镜像
docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true -v /usr/local/docker_registry:/var/lib/registry registry:latest
-p 5000:5000 端口
--name=registry 运行的容器名称
--restart=always 自动重启
--privileged=true centos7中的安全模块selinux把权限禁止了,加上这行是给容器增加执行权限
-v /usr/local/docker_registry:/var/lib/registry 把主机的/usr/local/docker_registry 目录挂载到 registry容器的/var/lib/registry目录下,假如有删除容器操作,我们的镜像也不会被删除
registry:latest 需要运行镜像名称
- 修改10.7.32.27的daemon.json
因为上传和下载都需要使用HTTPS协议,为了在上传下载时不报错,需要在配置文件中添加"insecure-registries":["10.7.32.27:5000"]参数,表示信任这个私有仓库,不进行安全证书检查(centos7为例)
{
"registry-mirrors": ["https://rgiropog.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts":{ "max-size":"10m","max-file":"1"},
"insecure-registries":["10.7.32.27:5000"]
}
- 重启docker,配置生效
- 上传镜像
#使用openjdk:8测试
#给镜像重新起标记
docker tag openjdk:8 10.7.32.27:5000/openjdk
#将镜像上传
docker push 10.7.32.27:5000/openjdk
- 查看上传的镜像
curl http://10.7.32.27:5000/v2/_catalog
- 另一台10.41.85.41下载镜像
- 首先需要配置daemon.json,和上面一样加入,然后重启docker
"insecure-registries":["10.7.32.27:5000"]
下载镜像
docker pull 10.7.32.27:5000/openjdk
使用10.41.85.41上传镜像
docker tag test:0001 10.7.32.27:5000/test
docker push 10.7.32.27:5000/test
在/usr/local/docker_registry中可以看到上传的镜像