十二)搭建本地 Registry
Docker Hub 雖然非常方便,但還是有些限制,比如:
- 需要 internet 連接,而且下載和上傳速度慢,
- 上傳到 Docker Hub 的鏡像任何人都能夠訪問,雖然可以用私有 repository,但不是免費的,
- 安全原因很多組織不允許將鏡像放到外網,
解決方案就是搭建本地的 Registry,Docker 已經將 Registry 開源了,同時在 Docker Hub 上也有官方的鏡像 registry,下面我們就在 Docker 中運行自己的 registry,
(1)私有倉庫配置:
增加信任:
root@cuiyongchao:/dockerfile# cat /etc/docker/daemon.json
{ "insecure-registries":["10.0.0.20:5000"] }
root@cuiyongchao:/dockerfile#
開啟https:
cat /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 10.0.0.20:5000
修改好后重啟docker 服務
systemctl daemon-reload
systemctl restart docker
重啟docker服務后,將容器重啟
docker start $(docker ps -aq)
(2)創建容器
①啟動 registry 容器,
root@cuiyongchao:/dockerfile# docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
cbdbe7a5bc2a: Pull complete
47112e65547d: Pull complete
46bcb632e506: Pull complete
c1cc712bcecd: Pull complete
3db6272dcbfa: Pull complete
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:2
23db09da07b88129b557ebd1c3e960e700bca8d88c39a0ca01d2db05532671f1
root@cuiyongchao:/dockerfile#
注釋:
①鏡像是 registry:2,
②`-d` 是后臺啟動容器,
③`-p` 將容器的 5000 埠映射到 Host 的 5000 埠,5000 是 registry 服務埠,埠映射我們會在容器網路章節詳細討論,
④`-v` 將容器 /var/lib/registry 目錄映射到 Host 的 /myregistry,用于存放鏡像資料,`-v` 的使用我們會在容器存盤章節詳細討論,
②通過 docker tag 重命名鏡像,使之與 registry 匹配,
docker tag cuiyongchao007/httpd:v1 10.0.0.20:5000/cuiyongchao007/httpd:v1
? 我們在鏡像的前面加上了運行 registry 的主機名稱和埠, 前面已經討論了鏡像名稱由 repository 和 tag 兩部分組成,而 repository 的完整格式為:[registry-host]:[port]/[username]/xxx 只有 Docker Hub 上的鏡像可以省略 [registry-host]:[port] ,
③通過 docker pull 上傳鏡像,
root@cuiyongchao:/dockerfile# docker push 10.0.0.20:5000/cuiyongchao007/httpd
The push refers to repository [10.0.0.20:5000/cuiyongchao007/httpd]
850c0c904ff3: Pushed
c264370aa736: Pushed
e6f7f192bbc8: Pushed
6d80bc0bd923: Pushed
d0fe97fa8b8c: Pushed
v1: digest: sha256:60b82a0c2599b217d5231d3a54eb9f691ac8bc15b66f8f5f79f383f87c9c51ce size: 1366
④現在已經可通過 docker pull 從本地 registry 下載鏡像
root@cuiyongchao:/dockerfile# docker pull 10.0.0.20:5000/cuiyongchao007/httpd:v1
v1: Pulling from cuiyongchao007/httpd
Digest: sha256:60b82a0c2599b217d5231d3a54eb9f691ac8bc15b66f8f5f79f383f87c9c51ce
Status: Downloaded newer image for 10.0.0.20:5000/cuiyongchao007/httpd:v1
10.0.0.20:5000/cuiyongchao007/httpd:v1
以上是搭建本地 registry 的簡要步驟,當然 registry 也支持認證,https 安全傳輸等特性,具體可以參考官方檔案 https://docs.docker.com/registry/configuration/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/208640.html
標籤:其他
上一篇:鵝廠分布式大氣監測系統:以 Serverless 為核心的云端能力如何打造
下一篇:容器技術(三)鏡像小結【16】
