1. 程式人生 > 其它 >CentOS環境下Docker私有倉庫搭建

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