Docker倉庫的搭建與管理(官方鏡像倉庫+私有倉庫+用戶認證+遠程連接)

1.docker hub(官方鏡像倉庫)

需要登錄 https://hub.docker.com–> 註冊帳號

1.1 登錄docker hub

docker login 要進行推送得先登錄 dockerhub 帳號
在這裏插入圖片描述
在這裏插入圖片描述

1.2 對推送的鏡像打標籤

docker tag busybox:latest redtestdocker/busybox:latest
在這裏插入圖片描述

1.3 推送鏡像

docker push redtestdocker/busybox:latest 儘量挑選小的鏡像去推送,快
再回到網頁,可以看到相應的鏡像已經推送成功

在這裏插入圖片描述
在這裏插入圖片描述

1.4 拉取鏡像

(可以先刪除 busybox 鏡像,已經有的話只會進行更新)
docker pull redtestdocker/busybox:latest

在這裏插入圖片描述

1.5 刪除 dockerhub 上的倉庫

選擇 setting–>delete–> 再輸入一次倉庫名確認 --> 刪除
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


2.搭建私有倉庫

搭建私有倉庫的原因
1.dockerhub 需要連網,慢;
2.所有人都可以訪問;
3.企業內部鏡像放到外網不安全
4.docker 公司已經把 registry 開源,可以搭建私有的

2.1 配置阿里雲鏡像加速器

因爲docker的官網在國外,我們使用docker pull 拉取鏡像是比較慢的,我們可以使用阿里雲提供的鏡像加速器。登陸阿里雲,註冊帳號,找到鏡像加速器,就會生成一個加速器地址。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


2.2 下載 registry 鏡像

docker pull registry下載 registry 鏡像
docker images
docker history registry:latest
docker run -d -p 5000:5000--name registry registry 運行並做端口映射
netstat-tnlp 看到本地的 5000 端口已經打開
docker volume ls查看邏輯卷

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述


2.3 上傳本地鏡像到 registry

docker tag nginx:latest localhost:5000/nginx:latest#需要先給鏡像重新打 tag
docker push localhost:5000/nginx ##通過本機 5000 端口進行上傳
curl localhost:5000/v2/_catalog ##查看倉庫內容,v2 表示 registry 版本是 2 版本 ;也可以在本地掛載的目錄中查看
tree docker 查看目錄結構,看到 nginx

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這時候倉庫搭建完成,但是現在命令行操作不方便,而且如果遠程連接時,必須要走 tls 加密,不然用戶名密碼是名文,不安全。


2.4 配置 registry 加密(tls)

可以在https://docs.docker.com/registry/insecure 複製
mkdir -p certs 創建證書目錄

 opensl req \ #生成加密證書和 key 
 >-newkeyrsa:4096-nodes-sha256-keyoutcerts/westos.org.key\ 
 >-x509-days365-outcerts/westos.org.crt

CN->Shaanxi->Xi'an->Westos->Linux->red.org(最好寫域名)->[email protected]
ls certs/

docker rm -f registry刪除,要重載 registry

docker run -d \ 
> --restart=always\ ##表示容器開機自啓動 
> --name registry\ > -v"$(pwd)"/certs:/certs\ ##指定數據目錄 
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443\ ##-e 表示編輯容器運行的參數 
> -eREGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt\ ##指定證書文件
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key\ ##指定key
> -p 443:443\ 
> registry

netstat -tnlp 443 端口打開


在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


2.5 測試

先要配置域名的解析,默認是以域名方式通信
mkdir -p /etc/docker/certs.d/red.org 創建證書目錄
cp/ root/certs/red.org.crt /etc/docker/certs.d/red.org/ca.crt拷貝證書
docker tag nginx:latest red.org/nginx:latest 打 標 籤 , red.org 必須要有解析
docker push red.org/nginx上傳成功,此時使用的就是 tls 加密

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


3.docker 倉庫添加用戶認證功能

1 添加用戶
mkdir auth

docker run --rm\ 
>--entrypointht passwd\ 
>registry-Bbnadminwestos
>auth/htpasswd

2 再次添加用戶
docker run --rm --entrypoint htpasswd registry -Bbn wsp redhat >> auth/htpasswd

3.用戶認證
docker rm -f registry

docker run -d 
--restart=always 
--name registry 
-v "$(pwd)"/certs:/certs 
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/red.org.crt 
-e REGISTRY_HTTP_TLS_KEY=/certs/red.org.key 
-p 443:443 
-v "$(pwd)"/auth:/auth 
-e "REGISTRY_AUTH=htpasswd" 
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
registry

4.測試
docker login westos.org 測試認證登錄
docker logout westos.org 測試認證登出
docker push westos.org/nginx 無法上傳
docker login westos.org 登錄上傳,可以

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述


4.遠程主機連接倉庫

server2 上安裝docker,並且要做解析在這裏插入圖片描述
在這裏插入圖片描述
scp -r /etc/docker/* server2:/etc/docker/ 把證書發送給 server2, 必須有證書才能登錄(server1 在啓動容器時加入了認證,所以要先認證)

在這裏插入圖片描述
docker login red.org認證登錄
docker pull red.org/nginx 成功拉取
docker run -d --name nginx -p 80:80 red.org/nginx 運行容器
curl localhost

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章