本文講述如何搭建docker私有倉庫。
有了docker hub,為什么還要搭建docker私有倉庫?
1、性能考慮:docker hub的訪問要通過互聯網,性能太低。
2、安全性:更多的時候,鏡像不想被外部的人獲取,雖然可以在docker hub上申請私有repository,但是需要付費。
系統環境:CentOS release 6.7 (Final)
IP:100.90.61.14
- 安裝docker
如下操作是在root用戶下
yum -y install docker-io
啟動docker
service docker start # 啟動docker
service docker stop # 停止docker
service docker restart # 重啟docker
- 搭建docker私有倉庫
搭建docker私有倉庫也是通過docker,真是就地取材。
1、首先下載registry鏡像
docker pull registry:2
說明:
這里下載的是最新版本2。
2、啟動registry鏡像的容器
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
說明:
-d ==> 作為daemon進程啟動,也就是后台啟動
-v /myregistry:/tmp/registry ==> 默認情況下,會將倉庫存放於容器內的/tmp/registry目錄下,指定本地目錄/myregistry掛載到容器,可以防止容器意外停止后鏡像的丟失。
-p 5000:5000 ==> 前一個5000是host的端口,后一個是容器的端口。這里是將容器的5000端口映射到host的5000端口。
3、配置https權限支持
修改/etc/sysconfig/docker,我的文件內容如下
# /etc/sysconfig/docker # # Other arguments to pass to the docker daemon process # These will be parsed by the sysv initscript and appended # to the arguments list passed to docker -d other_args="--exec-driver=lxc --selinux-enabled --insecure-registry 100.90.61.14:5000" DOCKER_CERT_PATH=/etc/docker # Resolves: rhbz#1176302 (docker issue #407) DOCKER_NOWARN_KERNEL_VERSION=1 # Location used for temporary files, such as those created by # # docker load and build operations. Default is /var/lib/docker/tmp # # Can be overriden by setting the following environment variable. # # DOCKER_TMPDIR=/var/tmp # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://2a5b5ce4.m.daocloud.io
說明:
--insecure-registry 100.90.61.14:5000,表示開啟5000端口的非安全模式,也就是http模式。
重啟docker服務
service docker restart
- 上傳鏡像到私有registry
先下載一個httpd鏡像作為示例
docker pull httpd
修改一下該鏡像的tag
# docker tag httpd 100.90.61.14:5000/kangaroo/httpd:v1
說明:
1)我們在鏡像前面加上了運行私有registry的ip:port,這是必須的,只有訪問docker hub的時候可以忽略ip:port。
2)kangaroo是我的網名,這里加上予以區分用戶。
上傳
上傳鏡像到私有registry
# docker push 100.90.61.14:5000/kangaroo/httpd:v1
在私有registry上查看鏡像
# curl -XGET http://100.90.61.14:5000/v2/_catalog
{"repositories":["kangaroo/httpd"]}
下載
從私有registry上下載鏡像
刪除本地鏡像
docker rmi 100.90.61.14:5000/kangaroo/httpd:v1
從私有registry上下載
docker pull 100.90.61.14:5000/kangaroo/httpd:v1
查看本地鏡像,可以看到已經拉下來了。
# docker images 100.90.61.14:5000/kangaroo/httpd v1 91199e851c7a 4 weeks ago 177.3 MB