Docker 创建本地仓库registry
搭建docker私有仓库也是通过docker,真是就地取材。
1、首先下载registry镜像
docker pull registry
2、启动registry镜像的容器
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry
说明:
-d ==> 作为daemon进程启动,也就是后台启动
-v /myregistry:/tmp/registry ==> 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录/myregistry挂载到容器,可以防止容器意外停止后镜像的丢失。
-p 5000:5000 ==> 前一个5000是host的端口,后一个是容器的端口。这里是将容器的5000端口映射到host的5000端口。
在客户机器上pull 本地仓库的时候会报https的错误
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件:
vim /usr/lib/systemd/system/docker.service
找到 ExecStart
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.134.129:5000
红色字体为添加的
重启docker:
systemctl daemon-reload systemctl restart docker
3.添加开放5000端口到firewall防火墙
firewall-cmd --add-port 5000/tcp(可以使用永久添加)
4.在客户机器中创建文件
然后在”/etc/docker/“目录下,创建”daemon.json“文件。并添加
[[email protected] ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["192.168.134.129:5000"]
}
注意书写格式为json格式,有严格的书写要求;
第1行是国内镜像源
第2行是docker私有仓库地址;192.168.134.129(这里用的是域名也可以是IP)就是docker私有仓库的地
测试:
在仓库机器192.168.129中修改下helle-world 的tag
docker tag centos_jdk8_tomcat8 192.168.134.129:5000/centos_jdk8_tomcat8
然后 使用push 到本地私有仓库
上传
上传镜像到私有registry
# docker push 192.168.134.129:5000/
在私有registry上查看镜像
# curl -XGET http://192.168.134.129:5000/v2/_catalog {"repositories":["centos_jdk8_tomcat8","helloworld"]}
出现上面的信息,表示上传成功。
在客户端机器上进行下载本地仓库镜像
执行命令:docker pull 192.168.134.129:5000/centos_jdk8_tomcat8
启动容器:
docker run -d -p 6000:8080 192.168.134.129:5000/centos_jdk8_tomcat8