搭建docker私有仓库

尝试搭建docker私有仓库,把上篇文章创建的tomcat镜像提交到仓库,方便别的客户端下载
我这里选择另一台阿里云ECS作为docker仓库(服务端),原来的mytomcat镜像机器作为客户端

服务端操作:
1、安装并启动docker

yum -y install docker
systemctl start docker.service
systemctl enable docker

2、下载registry镜像

docker pull registry

3、如果有开防火墙需要添加开放端口

iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT

4、通过registry镜像启动一个容器

docker run -d -p 5000:5000 –privileged=true -v /opt/registry:/tmp/registry docker.io/registry

参数说明:
-v /opt/registry:/tmp/registry :默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录/opt/registry挂载到容器
 
–privileged=true:CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError:[Errno 13] Permission denied:‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)错误

5、查看私有仓库
#网上都用这个curl 127.0.0.1:5000/v1/search,但是报404 page not found,后查证是v1版本的api查看方式,我们现在的版本是v2,所以用如下方法查看:

curl -X GET http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}   #私有仓库为空,没有提交新镜像到仓库中

客户端操作:
1、客户端前面已安装docker并创建过tomcat镜像,这里不再重复

2、修改/etc/sysconfig/docker(Ubuntu下配置文件地址为:/etc/init/docker.conf),增加启动选项(已有参数的在后面追加),之后重启docker,不添加报错,https证书问题。

OPTIONS='--selinux-enabled --insecure-registry 192.168.0.179:5000'    #CentOS 7系统
other_args='--insecure-registry 192.168.0.179:5000' #CentOS 6系统

因为Docker从1.3.X之后,与docker registry交互默认使用的是https,而此处搭建的私有仓库只提供http服务

3、把mytomcat镜像上传到私有仓库

[root@iZwz928sqnt95598ok0980Z ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mytomcat            1.0                 f1c4a4b9af62        15 hours ago        572.9 MB
docker.io/centos    7.2.1511            feac5e0dfdb2        8 months ago        194.6 MB

根据images id建立tag

docker tag f1c4a4b9af62 192.168.0.179:5000/mytomcat

上传

docker push 192.168.0.179:5000/mytomcat

查看是否上传成功

[root@http ~]# curl -X GET http://192.168.0.179:5000/v2/_catalog
{"repositories":["busybox","centos","mytomcat"]}

5、上传完毕之后,其它客户端便可以指定私有仓库地址下载该镜像

修改/etc/sysconfig/docker添加私有仓库地址:
#添加这一行

OPTIONS='--selinux-enabled --insecure-registry 192.168.0.179:5000'
systemctl restart docker  #重启

下载镜像

[root@zlfzy ~]# docker pull 192.168.0.179:5000/mytomcat
Trying to pull repository 192.168.0.179:5000/mytomcat ... 
sha256:4799dc1d2774d20849eadcf62c5cc0c33cde40030ee63fe5b7768d3bea2cdaed: Pulling from 114.55.10.225:5000/mytomcat

c865ff60e304: Pull complete 
Digest: sha256:4799dc1d2774d20849eadcf62c5cc0c33cde40030ee63fe5b7768d3bea2cdaed
Status: Downloaded newer image for 192.168.0.179:5000/mytomcat:latest

运行镜像

[root@zlfzy ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
114.55.10.225:5000/mytomcat   latest              f1c4a4b9af62        18 hours ago        572.9 MB
114.55.10.225:5000/busybox    latest              c75bebcdd211        3 days ago          1.106 MB
114.55.10.225:5000/centos     latest              feac5e0dfdb2        8 months ago        194.6 MB
[root@zlfzy ~]# docker run -itd 192.168.0.179:5000/mytomcat
966830f5fa1ff02664e420dd60fd2a78e135b3b7fe7c36363de22f89aaa2833f
[root@zlfzy ~]# docker ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS               NAMES
966830f5fa1f        114.55.10.225:5000/mytomcat   "/bin/bash"         26 seconds ago      Up 23 seconds                           goofy_almeida

自此,docker本地仓库搭建完成。。。

添加新评论