Docker私有倉庫

在工作中我們所使用鏡像為企業的鏡像,像這種鏡像是不能存儲到公共的docker hub上的。那麼就需要我們手動搭建一個私有的倉庫

下載registry鏡像

下載docker hub上最新版本的registry

docker pull registry

導入registry鏡像為文件,文件名registry。

docker save -o registry registry

把registry鏡像保存為文件是為了保證在沒有公網的服務器上也可以使用registry鏡像

從文件載入鏡像可以使用Docker load命令

docker load --input 文件

運運行registry容器

docker run -itd -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
  • -itd:在容器中打開一個偽終端進行交互操作,並在後臺運行;
  • -v:把宿主機的/opt/registry目錄綁定 到 容器/var/lib/registry目錄(這個目錄是registry容器中存放鏡像文件的目錄),來實現數據的持久化;
  • -p:映射端口;訪問宿主機的5000端口就訪問到registry容器的服務了;
  • --restart=always:這是重啟的策略,假如這個容器異常退出會自動重啟容器;
  • --name registry:創建容器命名為registry,你可以隨便命名;
  • registry:latest:這個是剛才pull下來的鏡像;

查看鏡像倉庫中所有的鏡像查看鏡像倉庫中所有的鏡像

 curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}

現在是空的,因為才剛運行,裡面沒有任何鏡像內容

修改daemon.json文件

如果沒有daemon.json文件,就創建一個

cat /etc/docker/daemon.json
{
"insecure-registries":[
"172.220.10.3:5000"
],
"max-concurrent-downloads": 10
}

鏡像打標籤

使用docker images命令查看鏡像

 [root@ice docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/openresty latest c82521676580 3 weeks ago 109 MB

將docker.io/nginx打上v1標籤。同時修改倉庫來源為172.220.10.3:5000/nginx

docker tag docker.io/openresty 172.220.10.3:5000/openresty:v1

私有倉庫的上傳/下載

下載使用docker push命令上傳更改標籤後的鏡像到私有倉庫

docker push 172.220.10.3:5000/openresty:v1

使用docker pull命令下載openresty鏡像(必須加上版本號下載)

[root@ice docker]# docker pull openresty:v1
Trying to pull repository 172.220.10.3:5000/openresty ...
v1: Pulling from 172.220.10.3:5000/openresty
534e72e7cedc: Pull complete
9421d7f09f88: Pull complete
Digest: sha256:4eeae101b1d5fea1d3d5c59055fbde8a3b53712e08c36f643d357301c59b3fdc
Status: Downloaded newer image for 172.220.10.3:5000/openresty:v1

查看鏡像倉庫中所有的鏡像

curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["openresty"]}


分享到:


相關文章: