搭建私有Docker倉庫,存儲到阿里雲OSS

Docker Registry簡介

Docker Registry是開源的軟件,能夠進行存儲和分發Docker鏡像。Docker Registry包括兩個關鍵組成部分:Docker Trusted RegistryDocker Hub。簡單理解,第一個是負責存儲的,第二個是負責管理鏡像的。html

Docker Hub之前叫做Docker Index,Docker每次pull鏡像時,都是先去Docker Index獲取鏡像信息,而後去保存鏡像的Registry裏面下載。docker

用過Docker的都知道,每次pull鏡像時都很慢。後來國內出現了一些加速下載的,但是隻是加速了鏡像文件的下載。仍是須要去鏈接官方的index服務,這一步很慢,並且還可能失敗。服務器

再日後,國內也提供index服務的加速了,但這樣咱們就須要徹底信任他們了,由於咱們徹底不用鏈接官方的服務器了。若是咱們不信任他們,或者咱們有本身的私有鏡像,不想發到公網去,咱們就能夠用Docker官方推薦的Docker Registry了。dom


安裝使用Docker Registry

下載Docker Registry的鏡像

官方提供了Docker Registry的鏡像文件,咱們只需執行docker pull registry就能夠了。今天(206.02.24)lastest標籤的registry是版本0.9.1,因此若是咱們要用最新版本2.3,能夠拉取tag爲2,2.3,2.3.0的均可以。執行以下命令便可:ide

docker pull registry:2

啓動Docker Registry

啓動:ui

docker run -d -p 443:5000 --restart=always --name registry registry:2

下載鏡像,並把它上傳到本身的registry:阿里雲

docker pull busybox && docker tag busybox localhost/busybox
docker push localhost/busybox

這樣localhost/busybox就在本身的registry中了,下次能夠直接pull下來rest

docker pull localhost/busybox

鏡像文件存儲本地

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/data:/var/lib/registry \
  registry:2

使用https

上一篇文章介紹瞭如何獲取證書,新建一個目錄config,將證書chained.pem和密鑰domain.key拷貝到目錄config裏面,而後執行:code

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  registry:2

下次對鏡像進行操做時,能夠把localhost改成這個證書對應的域名了。證書有的是crt結尾了,不要緊,把chained.pem改成你想要的名字就能夠了。htm

添加權限認證

按照以前的步驟,任何人均可以push和pull這個倉庫中的鏡像。若是443端口暴露在外網中,最好加個權限認證。testusertestpassword分別爲用戶名和密碼,能夠修改成你想要的,而後執行:

htpasswd -Bbn testuser testpassword > config/htpasswd

若是本地沒有安裝htpasswd,也能夠在啓動了registry後執行以下命令:

docker exec registry htpasswd -Bbn testuser testpassword > config/htpasswd

而後再執行啓動命令:

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/config/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  registry:2

這樣,訪問registry就須要先login,docker login myregistrydomain.com,按提示輸入用戶名和密碼便可。


使用阿里雲的OSS保存鏡像文件

默認鏡像文件存到本地磁盤,這個可擴展性不是很好,咱們能夠把鏡像文件存到OSS中。這個使用起來也很簡單,由於官方registry中已經包含了OSS的驅動了。只需修改啓動命令便可:

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/config/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  -e REGISTRY_STORAGE=oss \
  -e REGISTRY_STORAGE_OSS_ACCESSKEYID=********** \
  -e REGISTRY_STORAGE_OSS_ACCESSKEYSECRET=***************** \
  -e REGISTRY_STORAGE_OSS_REGION=oss-cn-qingdao \
  -e REGISTRY_STORAGE_OSS_BUCKET=******* \
  registry:2

將上面命令中的***替換成本身的,REGISTRY_STORAGE_OSS_REGION的值也要替換成本身oss所在的地區,若是是青島就是oss-cn-qingdao

注:

  • region查詢網址

  • 阿里雲OSS的其餘參數查詢網址

相關文章
相關標籤/搜索