1. 程式人生 > 實用技巧 >docker構建私有registry

docker構建私有registry

1. 啟動registry

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry  registry

-p  埠對映; 宿主機:容器內埠
--restart-always 重啟docker後自動拉起該容器
--name 指定容器名稱
-v 掛在資料卷; 宿主機目錄:容器內目錄
registry 這就是一個映象名稱,如centos7一樣
注: 啟動起來的容器就用來作為私有的映象倉庫, 顯然現在該倉庫裡什麼也沒有, 那麼該如何操作呢?

2. 修改配置檔案

docker pull時預設找的是docker官方的倉庫, 既然要做私有的倉庫, 首先記得修改配置讓docker能識別本地倉庫才行

vim /安裝目錄/daemon.json
{
   "insecure-registries": ["10.0.0.100:5000"]  -- 配置私有地址:埠
}

systemctl restart docker -- 重啟後docker就能識別配置的該倉庫了

3. 給本地映象倉庫上傳映象

使用push給映象倉庫上傳映象, 但是格式上有要求, 如下:
10.0.0.100:5000/name/nginx:v1
10.0.0.100:5000/專案名稱/功能名:版本

上傳第一步:
給要上傳的映象打tag
docker tag 映象id 10.0.0.100:5000/name/nginx:v1

開始上傳:
docker push 10.0.0.100:5000/name/nginx:v1

從倉庫拉取映象:
docker pull 10.0.0.100:5000/name/nginx:v1

4. 至此, 構建的私有映象倉庫就可以使用了, 但是不安全, 無驗證功能, 如何新增?

4.1 本地倉庫加安全認證

生成密碼:
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd  -Bbn 賬號 密碼 > /opt/registry-auth/htpasswd

4.2 重新啟動帶有金鑰功能的registry容器, 原來啟動的容器不再使用

docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry  --name register-auth -e "
REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry -v 引數掛載了兩個目錄 -e 指定的這些是固定寫法

4.3 此時push是需要先登入再push, 否則報錯

[root@oldboy ~]# docker login 10.0.0.100:5000
Username: 賬號  
Password: 密碼

4.4 pull時不用登入認證就可以的, 至此構建私有映象倉庫就完成了,

缺陷: 暫時不知道如何檢視構建的私有映象倉庫中的所有上傳的映象