搭建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“文件。并添加
[root@docker ~]# 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

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐