日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker仓库搭建、加密、用户认证

發布時間:2025/3/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker仓库搭建、加密、用户认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 . 含義及理解:

  • 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。 國內的公開倉庫包括 Docker Pool等,可以提供大陸用戶更穩定快速的訪問。
  • 當然,用戶也可以在本地網絡內創建一個私有倉庫。當用戶創建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。
  • 私有倉庫的優勢:
    有時候使用Docker Hub這樣的公共倉庫可能不方便,這種情況下用戶可以使用registry創建一個本地倉庫供私人使用,
    使用私有倉庫可以節省網絡帶寬,針對于每個鏡像不用每個人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可。而且提供鏡像資源利用,針對于公司內部使用的鏡像,推送到本地的私有倉庫中,以供公司內部相關人員使用。
    Docker官方提供的工具docker-registry可以用于構建私有的鏡像倉庫。
  • 2 . 搭建私有倉庫:

    首先將下載好的鏡像導入到倉庫里

    [root@docker ~]# docker images registry REPOSITORY TAG IMAGE ID CREATED SIZE registry 2 f32a97de94e1 4 months ago 25.8MB

    運行此容器

    [root@docker ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2 ## 創建并運行容器,設置數據卷,并做端口映射

    查看容器運行運行情況以及映射端口開啟情況:

    [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cee722ac6ccb registry:2 "/entrypoint.sh /etc…" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp registry [root@docker ~]# netstat -antlp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1091/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1564/master tcp 0 0 192.168.13.111:22 192.168.13.250:40316 ESTABLISHED 5785/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 1091/sshd tcp6 0 0 ::1:25 :::* LISTEN 1564/master tcp6 0 0 :::5000 :::* LISTEN 8994/docker-proxy

    上傳鏡像到本地倉庫

    在上傳鏡像的時候,一般會默認上傳到docker hub官方倉庫,現在需要上傳到本地自己創建的倉庫,需要指定上傳的地址以及端口。如果使用ip默認使用tls加密,目前沒有設置,所有直接指定到本機的端口。

    docker tag nginx:latest localhost:5000/nginx

    上傳修改過標簽的鏡像到本地倉庫:

    docker push localhost:5000/nginx # 上傳curl localhost:5000/v2/_catalog # 核實是否上傳成功

    查看其數據卷掛載點

    運行容器的時候,設置了數據卷,可以子阿宿主機查看上傳的結果:

    cd /opt/registry/ cd docker/ cd registry/ cd v2/ cd repositories/

    此時創建的私有倉庫遠程主機無法使用,并且不夠安全,此時則可以采用私有倉庫加證書加密的方式來創建私有倉庫

    3 . 私有倉庫的TLS加密

    以上倉庫使用明文的方式,并且沒有認證。存在較大的安全隱患,下面介紹使用TLS加密以及用戶認證。
    為docker倉庫添加證書加密功能
    docker遠程主機訪問私有倉庫,默認必須使用TLS加密

    1 . 生成證書

    mkdir -p certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/haha.com.key -x509 -days 365 -out certs/haha.com.crt

    2、重新啟動registry容器:

    docker rm -f registry 先刪除之前開啟的容器

    重新加密開啟容器:

    docker run -d \ ##-d:打入后臺 > --restart=always \ > --name registry \ > -v "$(pwd)"/certs:/certs \ > ##-v:手動指定數據卷的掛載 \ > -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ ##-e:編輯registry的參數;監聽443端口 > -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/haha.com.crt \ ##使用證書為生成的證書 > -e REGISTRY_HTTP_TLS_KEY=/certs/haha,com.key \ ##使用的私鑰 > -p 443:443 \ ##端口映射 > registry:2 ##倉庫名

    查看容器運行情況以及端口開啟情況:

    docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d3063593b314 registry:2 "/entrypoint.sh /etc…" 33 seconds ago Up 31 seconds 0.0.0.0:443->443/tcp, 5000/tcp registrynetstat -antlp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 656/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 778/master tcp 0 0 172.25.13.160:22 172.25.13.250:59964 ESTABLISHED 20132/sshd: root@pt tcp6 0 0 :::22 :::* LISTEN 656/sshd tcp6 0 0 ::1:25 :::* LISTEN 778/master tcp6 0 0 :::443 :::* LISTEN 21555/docker-proxy

    docker客戶端的設置。

    mkdir -p /etc/docker/certs.d/toto.com # 創建該目錄,名稱和證書域名一致 cd /etc/docker/certs.d/haha.com cp /root/certs/haha.com.crt ca.crt

    證書域名解析的更改

    192.168.13.111 docker haha.com

    驗證部署是否成功

    修改本地鏡像標簽為固定格式:域名/進行名稱

    docker tag nginx:v4 haha.com/nginx

    上傳鏡像:

    docker push haha.com/nginx

    4 . Docker倉庫添加用戶認證功能

    1 、創建用戶密碼文件:

    mkdir auth docker run --rm --entrypoint htpasswd registry:2 \ -Bbn haha redhat > auth/htpasswd #茶ungjian用戶密碼文件:用戶haha密碼redhat

    2 由于創建密碼文件已經開啟了一個容器,需要先刪除該容器

    docker rmi registry

    3 再次運行容器同時添加用戶認證功能。

    docker run -d \ ##-d:打入后臺 > --restart=always \ > --name registry \ > -v "$(pwd)"/certs:/certs \ > ##-v:手動指定數據卷的掛載 \ > -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ ##-e:編輯registry的參數;監聽443端口 > -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/toto.com.crt \ ##使用證書為生成的證書 > -e REGISTRY_HTTP_TLS_KEY=/certs/toto,com.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:2 ##倉庫名

    4 、查看容器以及端口開啟情況:

    docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17a21a99d6a6 registry:2 "/entrypoint.sh /etc…" About a minute ago Up About a minute 0.0.0.0:443->443/tcp, 5000/tcp registrynetstat -antlp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 656/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 778/master tcp 0 0 172.25.13.160:22 172.25.13.250:59964 ESTABLISHED 20132/sshd: root@pt tcp6 0 0 :::22 :::* LISTEN 656/sshd tcp6 0 0 ::1:25 :::* LISTEN 778/master tcp6 0 0 :::443 :::* LISTEN 22096/docker-proxy

    到次用戶認證功能設置成功
    測試:

    1 、再沒有認證的情況下無法上傳。

    docker tag busybox:latest haha.com/busyboxdocker push haha.com/busybox

    2 、進行認證登陸

    docker login haha.com Username: haha Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded docker push haha.com/busybox The push refers to repository [haha.com/busybox] 8a788232037e: Pushed latest: digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 size: 527

    3 登陸成功后會產生認證文件

    /root/.docker/config.json #記錄用戶登陸信息

    總結

    以上是生活随笔為你收集整理的docker仓库搭建、加密、用户认证的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。