一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 局域網內部署 Docker Registry(推薦)

局域網內部署 Docker Registry(推薦)

2021-01-25 17:35sparkdev 服務器知識

本文將從創建單機的 Docker Registry 開始,逐步完成局域網內可用的 Docker Registry 的創建,并重點解釋如何使用 IP 地址訪問 Registry 的方法

在局域網內部署 docker registry 可以極大的提升平時 pull、push 鏡像的速度,從而縮短自動化操作的過程。同時也可以緩解帶寬不足的問題,真是一舉多得。本文將從創建單機的 docker registry 開始,逐步完成局域網內可用的 docker registry 的創建,并重點解釋如何使用 ip 地址訪問 registry 的方法。

注意,本文假設你已經在使用的 os 中安裝了 docker 引擎。

創建本機使用的 docker registry

這是一個非常簡單的過程,簡單到只需要運行一個 docker 容器就可以了:

?
1
2
3
$ docker run -d -p 5000:5000 --restart=always --name registry \
-v `pwd`/registry:/var/lib/registry \
registry:2

查看一下 5000 端口是否已被監聽:

局域網內部署 Docker Registry(推薦)

看起來還不錯,讓我們向本地的 registry 中推送一個鏡像試試。

先找個鏡像,打上自己的 tag:

?
1
2
$ docker pull ubuntu
$ docker tag ubuntu localhost:5000/myubuntu:20170520

局域網內部署 Docker Registry(推薦)

從上圖我們可以看到,兩個鏡像完全是一樣的,只不過我們創建的 tag 名稱不一樣而已。

接下來把鏡像 push 到本地的 registry 中:

?
1
$ docker push localhost:5000/myubuntu:20170520

局域網內部署 Docker Registry(推薦)

上圖顯示 push 操作成功了,那再看看文件系統發生了什么變化:

局域網內部署 Docker Registry(推薦)

在我們掛載的 ~/registry 目錄的子目錄中出現了保存鏡像 myubuntu 的目錄,在這個目錄下保存了鏡像相關的數據。

最后我們看看能不能從自己的庫中 pull 鏡像。先把本地的鏡像 localhost:5000/myubuntu:20170520 刪除掉:

?
1
$ docker rmi localhost:5000/myubuntu:20170520

然后從本地的庫中 pull 鏡像:

?
1
$ docker pull localhost:5000/myubuntu:20170520

是不是 pull 操作已經成功啦!

創建局域網內可用的 docker registry

前面創建的 registry 可以在局域網內使用嗎?我們來做個試驗。

運行 registry 的機器 ip 為:192.168.171.156,我們在局域網中的另一臺機器上創建 tag 并執行推送命令:

局域網內部署 Docker Registry(推薦)

推送失敗了!原因是為了保證安全,跨機的鏡像推送操作默認采用的都是 https 協議。也就是說,為了在局域網內使用 docker registry, 我們必須配置 https 版的 registry 服務器。

選擇通過 ip 地址訪問 registry

由于種種原因,筆者無法為這臺 docker registry server 提供一個有效的域名。好在它的 ip 地址是固定的,因此決定通過 ip 地址來訪問這臺 registry 服務器。假設這臺機器的 ip 地址為:10.32.2.140,下面的描述都以此 ip 地址為例。

創建自簽名的證書

既然是在局域網中使用,因此不會大動干戈的去購買 https 證書,自己生成一個自簽名的就足夠了。但這也存在一個缺點,就是需要在作為客戶端的 docker daemon 中安裝這個根證書,本文的稍后部分會介紹這一步驟。

在 ubuntu 系統中,下面的命令會在 dcerts 目錄下生成秘鑰和自簽名的證書:

?
1
2
3
4
5
openssl req \
  -newkey rsa:4096 -nodes -sha256 \
  -keyout dcerts/domain.key \
  -x509 -days 356 \
  -out dcerts/domain.crt

注意,在執行此命令前需要在當前目錄下創建 dcerts 目錄。此命令的細節本文就不解釋了,有興趣的同學去查 openssl 命令的幫助文檔。

局域網內部署 Docker Registry(推薦)

生成證書時,openssl 要求我們輸入相關的信息。比如地域和公司、部門的信息。比較重要的是 common name,如果你是要為某個域名生成證書,那么這里就應該是你的域名。我們使用的是 ip 地址,所以我就想當然的把 ip 地址放在了這里。很遺憾的是這并不正確!如果拿此時生成的證書去配置 docker registry,我們將無法完成 pull/push 操作。配置的 registry 根本無法在局域網中使用。

此處是一個很隱晦的 openssl 配置問題,當我們使用 ip 地址作為訪問服務器的名稱時就會碰到。解決的方法也很簡單,就是在生成證書的配置文件中指定 subjectaltname 。打開文件 /etc/ssl/openssl.cnf,在 [v3_ca] 節點添加配置項:

subjectaltname = ip:10.32.2.140

局域網內部署 Docker Registry(推薦)

保存并退出,然后重新執行上面生成證書的命令。

運行 https 版的 registry

有了前面創建的證書,我們就可以運行新版的 registry 了:

?
1
2
3
4
5
6
7
8
$ docker run -d -p 5000:5000 \
  --restart=always \
  --name registry \
  -v `pwd`/dstorage:/var/lib/registry \
  -v `pwd`/dcerts:/certs \
  -e registry_http_tls_certificate=/certs/domain.crt \
  -e registry_http_tls_key=/certs/domain.key \
  registry:2

命令中我們把證書所在的目掛載到了容器的 /certs 目錄。然后分別指定了容器的環境變量 registry_http_tls_certificate 和 registry_http_tls_key,這兩個環境變量會引用我們常見的秘鑰文件和證書文件。

好了,到目前為止新版的 docker registry 已經可以提供服務了。

在 client 端設置根證書

為了快速、方便和省錢,我們沒有去購買商業版的證書。這種方式的弊端是:必須把我們生成的根證書安裝到每一個需要訪問 registry 服務器的客戶端上。具體做法如下:

把前面生成的證書文件 dcerts/domain.crt 復制到需要訪問 registry 服務器的機器上。放到目錄 /etc/docker/certs.d/10.32.2.140:5000/ 中,并重命名為 ca.crt。當然這個目錄需要你自己創建。最后重新啟動 docker 服務:

?
1
$ sudo systemctl restart docker.service    // 不同的系統重啟服務的命令可能不一樣。

終于大功告成了,讓我們往 registry 中推送一個鏡像吧:

局域網內部署 Docker Registry(推薦)

看,redis:3.2 已經被 tag 為 10.32.2.140:5000/myredis:20170520,并推送到了局域網中的 docker registry server 中。
為了驗明正身,我們還是到 10.32.2.140 上去看一下文件存儲的狀態:

局域網內部署 Docker Registry(推薦)

從這張圖中我們可以看到,myredis:20170520 真的已經被 registry 保存到文件系統中了。

總結

由于安全性的考慮,配置局域網內可用的 docker registry 稍微有點麻煩。尤其是使用 ip 地址的配置方式,需要配置證書的 subjectaltname 才能正常工作。但完成配置后,使用局域網內的 registry 還是很爽的。希望本文對有類似需求的朋友們有所幫助。

原文鏈接:http://www.cnblogs.com/sparkdev/p/6890995.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人人爽人人草 | 国产小视频在线免费 | 亚洲高清国产拍精品动图 | 精品国产91久久久久 | 久久久GOGO无码啪啪艺术 | 天天爱天天做天天爽天天躁 | 国产精品网站在线观看 | 18岁的老处女 | 日本生活中的玛丽 | 天天亚洲综合 | 国产麻豆91欧美一区二区 | jizzjizz成熟丰满舒服 | 免费精品99久久国产综合精品 | 嫩草影院永久一二三入口 | www视频免费 | 叛佛 作者满栀小说免费阅读 | 四虎影视在线影院在线观看 | 精品日韩欧美一区二区三区 | 忘忧草研究院一二三 | 欧美黑人换爱交换乱理伦片 | 描写细腻的高h肉 | 亚洲同性男男gay1069 | 男人v天堂 | 手机看片日韩1024你懂的首页 | 青春草视频在线免费观看 | 天天操免费视频 | 性做久久久久免费观看 | 欧美艳星kagneyiynn | 亚洲图片综合区 | 亚洲国产成人精品激情 | 涩涩屋在线播放 | 激情视频激情小说 | 午夜亚洲视频 | 穆挂英风流艳史小说 | 阿v天堂2020| 卫生间被教官做好爽HH视频 | 日本护士厕所xxx | 久久99精品涩AV毛片观看 | 干妞网免费视频 | 欧美日韩国产最新一区二区 | 色一情|