CentOS環境下Docker私有倉庫搭建
本文講述如何搭建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