前言
在使用公共的鏡像的時候,有些更新沒法手動控制,而且如果是自己内部的鏡像也不可能直接push到公共鏡像裡面,是以,需要有自己的私有倉庫。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMiRWM4UjNhNTY5YzM3QmZ0UGOwIjZwUGO2YmNiBzNy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
docker-registry
docker官方提供一個docker-register工具,用于建構私有倉庫。
這個工具有兩種方式運作,一種是docker官方提供的鏡像,直接運作;另一種是直接在作業系統上部署運作。
容器運作
在安裝啟動docker服務以後,直接運作指令
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry registery
記得把鏡像存儲的目錄映射出來,不然容器沒了,資料就沒了。
本地安裝
新版本的docker-registry是用Go語言寫的,是以,到github上的docker/distribution-library-image就可以找到對應的二進制了,參考文章連結
找到register和config-example.yml檔案
register
Usage:
registry [flags]
registry [command]
Available Commands:
serve `serve` stores and distributes Docker images
garbage-collect `garbage-collect` deletes layers not referenced by any manifests
help Help about any command
Flags:
-h, --help=false: help for registry
-v, --version=false: show the version and exit
修改配置檔案:
cp config-example.yaml /etc/docker/config.yaml
vim /etc/docker/config.yaml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /data/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
運作服務
./registry serve /etc/docker/config.yaml
使用
建立好私有倉庫以後,可以通過修改标簽,來将現有的鏡像送出到私有倉庫
修改名稱和标簽:
docker tag centos:latest 192.168.1.100:5000/centos:latest
push到私有倉庫:
docker push 192.168.1.100:5000/centos:latest
pull到本地:
docker pull 192.168.1.100:5000/centos:latest