Docker Registry是開源的軟件,能夠進行存儲和分發Docker鏡像。Docker Registry包括兩個關鍵組成部分:Docker Trusted Registry和Docker Hub。簡單理解,第一個是負責存儲的,第二個是負責管理鏡像的。html
Docker Hub之前叫做Docker Index,Docker每次pull鏡像時,都是先去Docker Index獲取鏡像信息,而後去保存鏡像的Registry裏面下載。docker
用過Docker的都知道,每次pull鏡像時都很慢。後來國內出現了一些加速下載的,但是隻是加速了鏡像文件的下載。仍是須要去鏈接官方的index服務,這一步很慢,並且還可能失敗。服務器
再日後,國內也提供index服務的加速了,但這樣咱們就須要徹底信任他們了,由於咱們徹底不用鏈接官方的服務器了。若是咱們不信任他們,或者咱們有本身的私有鏡像,不想發到公網去,咱們就能夠用Docker官方推薦的Docker Registry了。dom
官方提供了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
啓動: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
上一篇文章介紹瞭如何獲取證書,新建一個目錄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端口暴露在外網中,最好加個權限認證。testuser
和testpassword
分別爲用戶名和密碼,能夠修改成你想要的,而後執行:
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中。這個使用起來也很簡單,由於官方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
。
注: