最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker搭建私有化倉(cāng)庫(kù)的幾種方法

 更新時(shí)間:2024年08月28日 11:05:41   作者:cangloe  
搭建 Docker 私有化倉(cāng)庫(kù)是一個(gè)非常重要的實(shí)踐,它能夠幫助你安全地存儲(chǔ)和管理 Docker 鏡像,本文主要介紹了Docker搭建私有化倉(cāng)庫(kù)的的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下

搭建 Docker 私有化倉(cāng)庫(kù)是一個(gè)非常重要的實(shí)踐,它能夠幫助你安全地存儲(chǔ)和管理 Docker 鏡像,而無(wú)需將其發(fā)布到公共 Docker Hub。通過(guò)使用私有化倉(cāng)庫(kù),你可以:

  • 提高安全性:鏡像存儲(chǔ)在受控的環(huán)境中。
  • 提升效率:在公司網(wǎng)絡(luò)內(nèi)傳輸鏡像,速度更快。
  • 實(shí)現(xiàn)自動(dòng)化:配合 CI/CD 系統(tǒng)實(shí)現(xiàn)自動(dòng)鏡像管理。

本文將詳細(xì)介紹如何在不同環(huán)境下搭建 Docker 私有化倉(cāng)庫(kù),并提供配置和優(yōu)化建議。

一、Docker 私有化倉(cāng)庫(kù)的基本原理

Docker 私有化倉(cāng)庫(kù)(也稱為 Docker Registry)是一種允許用戶存儲(chǔ)和分發(fā) Docker 鏡像的軟件應(yīng)用。Docker 官方提供了一個(gè)開(kāi)源的 Docker Registry 鏡像,可以在本地或服務(wù)器上輕松運(yùn)行。

Registry 與 Repository

  • Registry:是存儲(chǔ)和管理 Docker 鏡像的服務(wù)。
  • Repository:是 Registry 中具體的一個(gè)鏡像集合,比如 nginx。

鏡像標(biāo)簽

  • Tag:是一個(gè)指向鏡像的標(biāo)簽,如 nginx:latest。

二、搭建 Docker 私有化倉(cāng)庫(kù)

方法一:使用 Docker 官方 Registry 鏡像

Docker 官方提供了一個(gè)開(kāi)源的 Docker Registry 鏡像,可以直接使用。

1. 拉取并運(yùn)行官方 Registry 鏡像

首先,拉取官方 Registry 鏡像并運(yùn)行:

docker pull registry:2

運(yùn)行私有化倉(cāng)庫(kù):

docker run -d -p 5000:5000 --name my-registry registry:2
  • -d:后臺(tái)運(yùn)行容器。
  • -p 5000:5000:將主機(jī)的 5000 端口映射到容器的 5000 端口。
  • --name my-registry:為容器命名為 my-registry。

2. 推送鏡像到私有化倉(cāng)庫(kù)

將本地鏡像推送到私有化倉(cāng)庫(kù):

給鏡像打標(biāo)簽:

docker tag <IMAGE_ID> localhost:5000/my-image:latest

例如:

docker tag ubuntu:latest localhost:5000/ubuntu:latest

推送鏡像到私有倉(cāng)庫(kù):

docker push localhost:5000/ubuntu:latest

3. 從私有化倉(cāng)庫(kù)拉取鏡像

在其他 Docker 主機(jī)上,從私有化倉(cāng)庫(kù)拉取鏡像:

docker pull localhost:5000/ubuntu:latest

注意:在其他機(jī)器上訪問(wèn)私有倉(cāng)庫(kù)時(shí),需要將 localhost 替換為私有倉(cāng)庫(kù)所在機(jī)器的 IP 地址或域名。

4. 驗(yàn)證倉(cāng)庫(kù)中的鏡像

使用 curl 驗(yàn)證倉(cāng)庫(kù)中存儲(chǔ)的鏡像:

curl http://localhost:5000/v2/_catalog

返回結(jié)果:

{
  "repositories": [
    "ubuntu"
  ]
}

5. 使用 docker-compose 啟動(dòng)私有倉(cāng)庫(kù)

你可以使用 docker-compose 來(lái)簡(jiǎn)化啟動(dòng)過(guò)程:

version: '3'

services:
  registry:
    image: registry:2
    ports:
      - "5000:5000"
    volumes:
      - ./data:/var/lib/registry

運(yùn)行 docker-compose

docker-compose up -d

方法二:使用 Harbor 搭建企業(yè)級(jí)私有倉(cāng)庫(kù)

Harbor 是一個(gè)開(kāi)源的企業(yè)級(jí) Docker Registry,提供更豐富的功能,如用戶管理、訪問(wèn)控制、鏡像復(fù)制等。

1. 安裝 Docker 和 Docker Compose

確保你的系統(tǒng)上已經(jīng)安裝了 Docker 和 Docker Compose。

2. 下載 Harbor 安裝包

訪問(wèn) Harbor 官方下載頁(yè)面 下載最新版本。

wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-online-installer-v2.9.0.tgz

解壓安裝包:

tar xzvf harbor-online-installer-v2.9.0.tgz
cd harbor

3. 配置 Harbor

在 harbor 目錄下,有一個(gè) harbor.yml 配置文件。根據(jù)需要進(jìn)行配置:

hostname: reg.mycompany.com  # 修改為你的域名或IP

https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

harbor_admin_password: Harbor12345  # 設(shè)置管理員密碼

注意:確保使用正確的域名和證書(shū)路徑??梢酝ㄟ^(guò) Let’s Encrypt 獲取免費(fèi) SSL 證書(shū)。

4. 安裝和啟動(dòng) Harbor

執(zhí)行以下命令安裝和啟動(dòng) Harbor:

./install.sh

啟動(dòng) Harbor 服務(wù):

docker-compose up -d

5. 訪問(wèn) Harbor Web UI

在瀏覽器中訪問(wèn) https://reg.mycompany.com,使用配置的管理員賬戶登錄,默認(rèn)用戶名為 admin,密碼為配置文件中設(shè)置的 harbor_admin_password。

6. 推送鏡像到 Harbor

登錄 Harbor:

docker login reg.mycompany.com

給鏡像打標(biāo)簽:

docker tag <IMAGE_ID> reg.mycompany.com/myproject/my-image:latest

推送鏡像到 Harbor:

docker push reg.mycompany.com/myproject/my-image:latest

7. 從 Harbor 拉取鏡像

在其他機(jī)器上,登錄 Harbor 并拉取鏡像:

docker login reg.mycompany.com
docker pull reg.mycompany.com/myproject/my-image:latest

方法三:使用 GitLab Container Registry

GitLab 提供了集成的 Container Registry,可以作為私有化 Docker 倉(cāng)庫(kù)使用。

1. 安裝 GitLab

參考 GitLab 官方文檔 安裝 GitLab。

2. 啟用 Container Registry

編輯 GitLab 配置文件 /etc/gitlab/gitlab.rb,啟用 Registry:

registry_external_url 'https://registry.mycompany.com'

重新配置 GitLab:

gitlab-ctl reconfigure

3. 登錄 GitLab Container Registry

docker login registry.mycompany.com

4. 推送鏡像到 GitLab Container Registry

給鏡像打標(biāo)簽:

docker tag <IMAGE_ID> registry.mycompany.com/mygroup/myproject/my-image:latest

推送鏡像:

docker push registry.mycompany.com/mygroup/myproject/my-image:latest

5. 從 GitLab Container Registry 拉取鏡像

docker pull registry.mycompany.com/mygroup/myproject/my-image:latest

三、配置私有化倉(cāng)庫(kù)的安全性

1. 使用 HTTPS 保護(hù)傳輸

在生產(chǎn)環(huán)境中,強(qiáng)烈建議為 Docker 私有化倉(cāng)庫(kù)配置 HTTPS,以保護(hù)數(shù)據(jù)傳輸安全。

生成自簽名證書(shū)

使用 openssl 生成自簽名證書(shū):

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

生成過(guò)程會(huì)提示輸入信息,如下所示:

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Guangdong
Locality Name (eg, city) []:Shenzhen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:admin@example.com

將證書(shū)掛載到容器中:

docker run -d -p 5000:5000 --name my-registry \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

2. 配置認(rèn)證訪問(wèn)

Docker 私有化倉(cāng)庫(kù)支持使用基礎(chǔ)認(rèn)證(Basic Auth)保護(hù)訪問(wèn)。

創(chuàng)建用戶和密碼文件

使用 htpasswd 創(chuàng)建用戶和密碼文件:

apt-get install apache2-utils -y
htpasswd -cB htpasswd myuser
  • myuser:用戶名。
  • 你會(huì)被提示輸入密碼并確認(rèn)。

啟動(dòng)帶認(rèn)證的 Registry

將認(rèn)證文件掛載到容器中:

docker run -d -p 5000

:5000 --name my-registry \
  -v `pwd`/certs:/certs \
  -v `pwd`/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

3. 配置防火墻

為確保私有化倉(cāng)庫(kù)的安全性,建議配置防火墻規(guī)則,僅允許特定的 IP 或子網(wǎng)訪問(wèn)倉(cāng)庫(kù)。

# 允許 192.168.1.0/24 子網(wǎng)訪問(wèn)
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 5000 -j ACCEPT

# 拒絕其他 IP 訪問(wèn)
iptables -A INPUT -p tcp --dport 5000 -j DROP

四、管理和監(jiān)控私有化倉(cāng)庫(kù)

1. 查看倉(cāng)庫(kù)中的鏡像

使用 curl 查看倉(cāng)庫(kù)中的鏡像:

curl -u myuser:mypassword https://localhost:5000/v2/_catalog

2. 查看鏡像標(biāo)簽

查看指定鏡像的標(biāo)簽:

curl -u myuser:mypassword https://localhost:5000/v2/<repository>/tags/list

例如:

curl -u myuser:mypassword https://localhost:5000/v2/ubuntu/tags/list

3. 刪除鏡像

刪除指定鏡像的標(biāo)簽:

curl -X DELETE -u myuser:mypassword https://localhost:5000/v2/<repository>/manifests/<digest>

獲取 digest

curl -u myuser:mypassword -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
https://localhost:5000/v2/<repository>/manifests/<tag>

例如:

curl -u myuser:mypassword -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
https://localhost:5000/v2/ubuntu/manifests/latest

4. 配置鏡像清理策略

定期清理不再使用的鏡像和標(biāo)簽,節(jié)省存儲(chǔ)空間??梢允褂?nbsp;Registry GC 工具。

停止 Registry:

docker stop my-registry

運(yùn)行垃圾回收:

docker run --rm -v /var/lib/registry:/var/lib/registry registry:2 garbage-collect /etc/docker/registry/config.yml

重啟 Registry:

docker start my-registry

5. 使用監(jiān)控工具

可以使用 Prometheus 和 Grafana 監(jiān)控 Registry 的性能和使用情況。

五、常見(jiàn)問(wèn)題和解決方案

1. Docker 客戶端無(wú)法連接私有倉(cāng)庫(kù)

  • 檢查私有倉(cāng)庫(kù)的網(wǎng)絡(luò)配置和防火墻規(guī)則。
  • 確保使用正確的域名或 IP 地址。
  • 如果使用自簽名證書(shū),確??蛻舳诵湃卧撟C書(shū)。

2. 推送鏡像失敗

  • 檢查用戶權(quán)限和認(rèn)證配置。
  • 檢查倉(cāng)庫(kù)的存儲(chǔ)空間是否已滿。
  • 確保 Docker 客戶端版本與 Registry 版本兼容。

3. 鏡像拉取速度慢

  • 使用 CDN 或鏡像加速服務(wù)。
  • 配置緩存代理,減少重復(fù)下載。

總結(jié)

通過(guò)本文的介紹,你應(yīng)該已經(jīng)掌握了搭建 Docker 私有化倉(cāng)庫(kù)的基本步驟和配置方法。無(wú)論是使用官方的 Docker Registry 鏡像,還是更強(qiáng)大的 Harbor 或 GitLab Container Registry,私有化倉(cāng)庫(kù)都能為你的鏡像管理帶來(lái)更高的安全性和效率。

到此這篇關(guān)于Docker搭建私有化倉(cāng)庫(kù)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker 私有化倉(cāng)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何獲取docker容器(container)的ip地址

    詳解如何獲取docker容器(container)的ip地址

    這篇文章主要介紹了詳解如何獲取docker容器(container)的ip地址,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker容器間跨宿主機(jī)通信-基于overlay的實(shí)現(xiàn)方法

    docker容器間跨宿主機(jī)通信-基于overlay的實(shí)現(xiàn)方法

    這篇文章主要介紹了docker容器間跨宿主機(jī)通信-基于overlay的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 使用docker部署influxdb與 mongo的常用命令

    使用docker部署influxdb與 mongo的常用命令

    這篇文章主要介紹了使用docker部署influxdb與 mongo的常用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • docker安裝RocketMQ的實(shí)現(xiàn)步驟

    docker安裝RocketMQ的實(shí)現(xiàn)步驟

    本文主要介紹了docker安裝RocketMQ的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Docker push鏡像失敗解決方法

    Docker push鏡像失敗解決方法

    這篇文章主要介紹了Docker push鏡像失敗解決方法的相關(guān)資料,這里對(duì)解決push 鏡像失敗提供了解決方案,需要的朋友可以參考下
    2016-12-12
  • Docker實(shí)現(xiàn)從零開(kāi)始搭建SOLO個(gè)人博客的方法步驟

    Docker實(shí)現(xiàn)從零開(kāi)始搭建SOLO個(gè)人博客的方法步驟

    本文主要介紹了Docker實(shí)現(xiàn)從零開(kāi)始搭建SOLO個(gè)人博客,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Dockerfile建立一個(gè)自定義的鏡像執(zhí)行自定義進(jìn)程詳細(xì)過(guò)程

    Dockerfile建立一個(gè)自定義的鏡像執(zhí)行自定義進(jìn)程詳細(xì)過(guò)程

    這篇文章主要介紹了Dockerfile建立一個(gè)自定義的鏡像執(zhí)行自定義進(jìn)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • docker刪除none鏡像的操作方法

    docker刪除none鏡像的操作方法

    刪除none的鏡像,要先刪除鏡像中的容器,要?jiǎng)h除鏡像中的容器,必須先停止容器,這篇文章主要介紹了docker刪除none鏡像的操作方法,需要的朋友可以參考下
    2023-01-01
  • Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins是基于Java開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。本文介紹了Jenkins Docker持續(xù)集成,分享給大家
    2021-05-05
  • docker容器中無(wú)法獲取宿主機(jī)hostname的解決方案

    docker容器中無(wú)法獲取宿主機(jī)hostname的解決方案

    這篇文章主要介紹了docker容器中無(wú)法獲取宿主機(jī)hostname的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論

深州市| 新化县| 贵南县| 广南县| 南京市| 高州市| 华宁县| 邹平县| 原阳县| 蕲春县| 宁陵县| 白银市| 合阳县| 稻城县| 开鲁县| 高州市| 酒泉市| 赤城县| 渑池县| 碌曲县| 县级市| 莱芜市| 孙吴县| 阳春市| 若尔盖县| 即墨市| 桂平市| 潍坊市| 商都县| 漳浦县| 玉溪市| 台东县| 孝感市| 西藏| 小金县| 大关县| 隆子县| 华阴市| 泸州市| 宣汉县| 南乐县|