保存和分發鏡像的最直接的方法就是使用Docker H u b,它是Docker公司維護的公共Regsitry,用戶能夠將本身的鏡像保存到Docker H u b 免費的repository中。若是不但願別人訪問本身的鏡像,也能夠購買私有repository.
通常咱們可使用Docker H u b上傳和下載鏡像,雖然十分方便,可是仍是有些限制,好比:
一、須要外網鏈接,並且上傳和下載速度慢
二、上傳到Docker H u b 的鏡像任何人都可以訪問,雖然能夠用私人repositroy,但不是免費的
三、由於安全緣由不少組織不容許將鏡像放到外網docker
解決方法是單間本地的Registry。
Docker已經將Registry開源了,同時在Docker H u b上也有官方的鏡像Registry。
咱們能夠在Docker中運行本身的Registry安全
在使用倉庫以前,首先咱們構建一個httpd鏡像,保存到本地中
首先建立dockerfile目錄和建立dokcerfile文件curl
cd ~ mkdir dokcerfile cd dockerfile touch dockerfie
按照以下編輯dockerfile
而後構建http鏡像ide
docker build -t httpd:v11 -f dockerfile /root/dockerfile
以下所示,構建成功
檢查鏡像學習
docker images
首先在根目錄下建立/myregistry目錄用於存放鏡像數據
本次使用鏡像是registry:2ui
cd / mkdir /myregistry
使用以下命令建立registry容器url
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
說明:
一、-d 後臺啓動容器
二、-p 將容器的5000端口映射到Host的5000端口。5000是registry服務端口
三、-v 將容器的/var/lib/regsitry目錄映射給Host的/myregistry,用於存放鏡像數據code
經過docker tag重命名鏡像,使之與registry匹配,以下所示:blog
docker tag yangchao/httpd:v1 127.0.0.1:5000/yangchao/httpd:v1
將httpd:v11更改成Registry要求的格式,格式以下:dockerfile
只有Docker Hub上的鏡像能夠省略registry-host:[port]
按照以下方式,經過docker tag重命名鏡像,使之與registry匹配
docker tag httpd:v11 127.0.0.1:5000/yangchao/httpd:v11
使用dokcer image命令檢查鏡像
而後將yangchao/httpd:v11上傳到Registry
docker push 127.0.0.1:5000/yangchao/httpd:v11
而後查看Registry中的鏡像
curl 127.0.0.1:5000/v2/_catalog
能夠在/myregistry目錄中查看相應的鏡像至此本地registry就建立完畢