14.Docker registry搭建私人鏡像倉庫

1.啟動一個registry容器

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

命令解讀:

--restart=always

一旦docker 重啟,就自動拉起容器

-v /opt/registrt:/var/lib/registry

數(shù)據(jù)卷掛載




2.測試registry狀態(tài)

由于使用的是云服務(wù)器,地址為服務(wù)器的地址+端口

若使用的是虛擬機,請使用虛擬機地址+端口

http://180.76.150.201:5000/v2/_catalog

可以查看到{"repositories": []} 表示現(xiàn)在倉庫中,沒有鏡像images





3.修改 docker配置文件??

vim?/etc/docker/daemon.json

加入如下參數(shù)(registry的地址以及端口):

,"insecure-registries": ["172.17.0.1:5000"]


注意:

參數(shù)間需用 “? , ” 進行分隔

"registry-mirrors": ["https://8m3kgh6j.mirror.aliyuncs.com"] 為配置的阿里云docker加速器的參數(shù),若未配置加速器可忽略


4.重啟docker服務(wù)

systemctl restart docker

5.推送鏡像到registry吧!

鏡像名稱由 repository + tag 兩部分組成,默認(rèn)為latest

repository 的完整格式為:[registry-host]:[port]/[username]/xxx

5.1先給鏡像打個標(biāo)簽,使之與registry 相匹配,例如如下的centos鏡像


docker tag centos_dockerfile_ssh?172.17.0.1:5000/white/centos_ssh:v1

注意:tag 專門用于標(biāo)記本地鏡像,將其歸入某一倉庫。

新鏡像如下:

5.2 push推送鏡像

鏡像標(biāo)簽打好了,就可以開始push鏡像到registry:

docker push??172.17.0.1:5000/white/centos_ssh

顯示如下結(jié)果pushed就是上傳成功了,


6.驗證成果

6.1? web測試是否上傳成功,還是之前的訪問網(wǎng)址,現(xiàn)在可以發(fā)現(xiàn)鏡像已經(jīng)在registry里了

http://180.76.150.201:5000/v2/_catalog



6.2 可以在linux的如下位置看到上傳的鏡像:

[root@instance-x0nj9foj white]# pwd

/opt/registrt/docker/registry/v2/repositories/white

[root@instance-x0nj9foj white]# ls

centos_ssh


/opt/registrt為“”第1步“”設(shè)置的本地掛載目錄



7.測試從本地registry拉取鏡像

7.1.刪除本地鏡像

docker image rm -f $(docker image ls -a -q)

7.2.docker pull? 本地鏡像

# docker pull 172.17.0.1:5000/white/centos_ssh:v1

7.3.查看是否拉取成功

docker images ls


拉取成功


8.registry安全加固

由于docker registry 采用的是http協(xié)議訪問,所以可以從http方面考慮,設(shè)定registry的密碼

8.1 安裝http工具包并生成秘鑰:

yum install httpd-tools -y

生成秘鑰目錄和密碼:

mkdir /opt/registry-auth/ -p?

htpasswd -Bbn white 123 > /opt/registry-auth/htpasswd

用戶名:white

密碼:123

查看生成的秘鑰:

[root@instance-x0nj9foj registry-auth]# cat htpasswd

white:$2y$05$QKDiWqvpqxgm1WvKniHG3.W14CpqnUW9dNoz.EQ.c1OXpsTrIgbW.

[root@instance-x0nj9foj registry-auth]# pwd

/opt/registry-auth


8.2 重新啟動帶有秘鑰功能的registry容器

首先刪除之前沒有密碼的registry

docker rm -f? 'docker ps -aq'

創(chuàng)建帶秘鑰的registry

-e為配置環(huán)境變量

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



8.3 push測試:

docker image ls選擇一個鏡像


將鏡像tag一下

docker tag?172.17.0.1:5000/white/centos_ssh:v1 172.17.0.1:5000/white/centos_ssh_pwd:v1


8.3.1.錯誤的流程

上傳鏡像到registry

docker push 172.17.0.1:5000/white/centos_ssh_pwd:v1

回顯為 no basic auth credentials

因為已經(jīng)開啟了密碼驗證,所以上傳失敗


8.3.2.正確的流程

1.需要先登錄經(jīng)常倉庫

docker login 172.17.0.1:5000

[root@instance-x0nj9foj opt]# docker login 172.17.0.1:5000? ? ? ? ?#輸入registry的地址

Username: white? ? ? ? #輸入這是的用戶名

Password:?123? ? ? ? ? ? ? ?#輸入設(shè)置的密碼

Login Succeeded? ? ? ?#回顯succeeded表示登錄成功


2.上傳鏡像

docker push 172.17.0.1:5000/white/centos_ssh_pwd:v1


上傳成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容