docker構建私有registry
阿新 • • 發佈:2020-08-11
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時不用登入認證就可以的, 至此構建私有映象倉庫就完成了,
缺陷: 暫時不知道如何檢視構建的私有映象倉庫中的所有上傳的映象