1. 程式人生 > >Docker--------registry私有倉庫搭建 [ Http ]

Docker--------registry私有倉庫搭建 [ Http ]

registry docker docker hub

1. 背景

docker中要使用鏡像,一般會從本地、docker Hup公共倉庫和其它第三方公共倉庫中下載鏡像,一般出於安全和外網(墻)資源下載速率的原因考慮企業級上不會輕易使用。那麽有沒有一種辦法可以存儲自己的鏡像的倉庫呢? ----> 企業級環境中搭建自己的私有倉庫。


2. 私有倉庫有優勢:

一、節省網絡帶寬,針對於每個鏡像不用每個人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可;

二、提供鏡像資源利用,針對於公司內部使用的鏡像,推送到本地的私有倉庫中,以供公司內部相關人員使用。


3. 環境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[[email protected]
/* */ ~]# uname -r 3.10.0-327.36.3.el7.x86_64


4. 服務器Ip地址

192.168.60.150


5. 安裝:

* 安裝docker

[[email protected] ~]# yum install docker


* 啟動docker服務

[[email protected] ~]# systemctl start docker


* 設置docker服務開機啟動

[[email protected] ~]# systemctl enable docker


* 拉取 registry鏡像,例如在daocloud.io/registry這個私有鏡像倉庫

[[email protected] ~]# docker pull daocloud.io/registry


* 創建本地鏡像存儲目錄

[[email protected] ~]# mkdir /data/local_docker_registry -p


* 運行容器,設置容器名稱為local_docker_registry, 掛在鏡像內docker鏡像倉庫/var/lib/registry 至本地/data/local_docker_registry目錄,並曝光5000端口, --restart=always讓其跟隨docker啟動時啟動

[[email protected]
/* */ ~]# docker run --name local_docker_registry --restart=always -d -v /data/local_docker_registry:/var/lib/registry -p 5000:5000 daocloud.io/registry


* 測試 [ 有返回就表示成功 ]

[[email protected] ~]# curl 192.168.60.150:5000/v2
<a href="/v2/">Moved Permanently</a>.


6. 上傳鏡像至私有倉庫測試

* 編寫dockerfile文件

# Nginx 
# Version 1.0.1
# Author lisea
# Url https://lisea.cn
# Base imgae
FROM centos

# Maintainer
MAINTAINER lisea [email protected]

# Commands
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install nginx -y
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN echo "this is test nginx image" > /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]


* 通過Dockerfile構建一個新鏡像, 直接指明registry和標簽

[[email protected] nginx]# docker build -t 192.168.60.150:5000/nginx:1.0.1 .


* push 上傳鏡像到私有倉庫

[[email protected] nginx]# docker push 192.168.60.150:5000/nginx:1.0.1


* 查看鏡像是否上傳成功

[[email protected] nginx]# curl 192.168.60.150:5000/v2/_catalog
{"repositories":["nginx"]}

* 其它服務器使用此鏡像

[[email protected] nginx]# docker pull 192.168.60.150:5000/nginx:1.0.1


7. 相關問題

* 可能會出現無法push鏡像到私有倉庫的問題。這是因為我們啟動的registry服務不是安全可信賴的。 解決:

   1. 需要修改docker的配置文件 /etc/sysconfig/docker-network,在添加下面的內容,

    DOCKER_NETWORK_OPTIONS="--insecure-registry 192.168.60.150:5000"

2. 重啟docker

[[email protected] nginx]# systemctl restart docker



8. 總結



以需求驅動技術,技術本身沒有優略之分,只有業務之分。


本文出自 “sea” 博客,請務必保留此出處http://lisea.blog.51cto.com/5491873/1934617

Docker--------registry私有倉庫搭建 [ Http ]