CentOS 搭建 Docker 私有鏡像倉庫

CentOS 搭建 Docker 私有鏡像倉庫

搭建 Docker 私有鏡像倉庫能為團隊提供高效、安全的鏡像管理方案。下面將詳細介紹每個步驟的操作細節,其中命令部分均用代碼塊展示。

一、環境準備

要搭建 Docker 私有鏡像倉庫,首先得確保服務器環境符合要求,這是后續操作順利進行的基礎。

1. 服務器要求

建議使用 CentOS 7 或 8 系統,內存至少 2GB,存儲空間 20GB 以上,這樣能保證倉庫在處理多個鏡像時運行流暢。

2. 安裝 Docker Engine

Docker 是搭建私有倉庫的核心依賴,不同 CentOS 版本安裝命令略有差異。

  • CentOS 7 安裝 Docker:
yum install -y docker
  • CentOS 8 安裝 Docker:
dnf install -y docker

安裝完成后,需要啟動 Docker 服務并設置開機自啟,確保服務器重啟后 Docker 能自動運行。

systemctl start docker
systemctl enable docker

3. 開放必要端口

Docker 私有倉庫默認使用 5000 端口,需在防火墻中開放該端口,否則其他客戶端無法訪問倉庫。

firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --reload

執行上述命令后,5000 端口將被永久開放,防火墻配置也會立即生效。

二、搭建 Docker 私有鏡像倉庫

準備工作完成后,就可以開始搭建私有倉庫了,主要包括拉取倉庫鏡像和啟動倉庫容器兩個步驟。

1. 拉取 registry 鏡像

Docker 官方提供的 registry 鏡像專門用于搭建私有倉庫,使用以下命令拉取:

docker pull registry

拉取過程中,Docker 會從官方倉庫下載鏡像文件。拉取完成后,用docker images命令可查看是否成功,若列表中出現 registry 鏡像信息,說明拉取成功。

docker images

2. 啟動倉庫容器

啟動容器時,需要進行端口映射、命名容器以及數據掛載等配置,確保倉庫能正常運行且數據可持久化。

docker run -d -p 5000:5000 --name myregistry -v /opt/registry:/var/lib/registry registry
  • -d:讓容器在后臺運行,不占用當前終端。

  • -p 5000:5000:將容器的 5000 端口映射到宿主機的 5000 端口,這樣外部才能通過宿主機端口訪問倉庫。

  • –name myregistry:給容器命名為 myregistry,方便后續管理和操作。

  • -v /opt/registry:/var/lib/registry:把宿主機的/opt/registry目錄掛載到容器的/var/lib/registry目錄,容器內的鏡像數據會存儲到宿主機的該目錄,即使容器被刪除,數據也不會丟失。

啟動后,用docker ps命令查看容器是否正常運行,若狀態為 “Up”,則表示倉庫容器啟動成功。

docker ps

三、配置倉庫訪問權限

為了保證私有倉庫的安全性,需要配置訪問權限,只有授權用戶才能進行推送和拉取操作。

1. 安裝 httpd-tools 工具

該工具用于生成存儲用戶名和密碼的文件,是實現身份認證的關鍵。

  • CentOS 7 安裝:
yum install -y httpd-tools
  • CentOS 8 安裝:
dnf install -y httpd-tools

2. 創建認證信息存儲目錄

專門創建一個目錄來存放認證文件,便于管理。

mkdir -p /opt/registry/auth

-p選項確保如果目錄不存在,會自動創建父目錄。

3. 生成密碼文件

通過 htpasswd 命令生成包含用戶信息的密碼文件。

  • 首次創建用戶:
htpasswd -Bc /opt/registry/auth/htpasswd username

這里的username是你要創建的用戶名,執行命令后會提示輸入密碼,輸入兩次確認后,就會在/opt/registry/auth目錄下生成htpasswd文件。-B表示使用 bcrypt 算法加密密碼,更安全;-c表示創建新文件。

  • 添加其他用戶:

如果需要添加更多用戶,不需要-c選項,否則會覆蓋現有文件。

htpasswd -B /opt/registry/auth/htpasswd another_username

4. 重啟倉庫容器應用認證配置

先停止并刪除之前的容器,再用新的配置啟動。

docker stop myregistry
docker rm myregistry

然后執行以下命令重新啟動容器,加載認證配置:

docker run -d -p 5000:5000 --name myregistry -v /opt/registry:/var/lib/registry -v /opt/registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry

其中,-v /opt/registry/auth:/auth將存放認證文件的目錄掛載到容器內;-e設置的環境變量指定了認證方式、認證領域和密碼文件路徑。

四、配置客戶端訪問倉庫

其他用戶的客戶端需要進行相應配置才能連接到私有倉庫。

1. 非 HTTPS 訪問配置

如果倉庫未配置 HTTPS,客戶端需要允許非 HTTPS 訪問。

編輯客戶端的/etc/docker/daemon.json文件(不存在則創建):

vi /etc/docker/daemon.json

在文件中添加倉庫地址:

{"insecure-registries":["倉庫服務器IP:5000"]}

保存退出后,重啟 Docker 服務使配置生效:

systemctl restart docker

2. 登錄倉庫

配置完成后,用戶需要登錄才能進行操作。

docker login 倉庫服務器IP:5000

輸入正確的用戶名和密碼后,顯示 “Login Succeeded” 則登錄成功。

五、測試私有倉庫

完成上述配置后,需要測試倉庫是否能正常接收和提供鏡像。

1. 推送鏡像到倉庫

先在客戶端對本地鏡像進行標記,使其符合私有倉庫的命名規范。

docker tag nginx:latest 倉庫服務器IP:5000/mynginx:v1

這里以 nginx 鏡像為例,倉庫服務器IP:5000是私有倉庫地址,mynginx:v1是自定義的鏡像名和標簽。

然后推送標記后的鏡像到倉庫:

docker push 倉庫服務器IP:5000/mynginx:v1

推送過程中會顯示進度,完成后提示推送成功。

2. 從倉庫拉取鏡像

在另一臺已配置好的客戶端上,拉取剛才推送的鏡像,測試倉庫是否能正常提供鏡像。

docker pull 倉庫服務器IP:5000/mynginx:v1

若拉取成功,說明倉庫工作正常。

六、倉庫維護與擴展

對倉庫進行定期維護和合理擴展,能保證其長期穩定運行。

1. 查看倉庫鏡像信息

通過 HTTP 請求可以查看倉庫中的鏡像列表和標簽信息。

  • 查看所有鏡像:在瀏覽器或用 curl 命令訪問http://倉庫服務器IP:5000/v2/_catalog。

  • 查看指定鏡像標簽:訪問http://倉庫服務器IP:5000/v2/鏡像名稱/tags/list。

2. 清理冗余數據

隨著鏡像的頻繁推送和刪除,倉庫會產生無用的冗余數據,需要定期清理。

先進入倉庫容器:

docker exec -it myregistry sh

然后執行清理命令:

registry garbage-collect /etc/docker/registry/config.yml

該命令會刪除未被引用的鏡像數據,釋放存儲空間。

3. 配置 HTTPS 訪問(可選)

為了提高安全性,可配置 HTTPS 訪問。需要準備 SSL 證書,然后在啟動倉庫容器時添加證書相關的掛載和環境變量,具體可參考 Docker 官方文檔的詳細配置步驟。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90712.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zookeeper的簡單了解

Zookeeper的簡單了解 Zookeeper是一個為分布式應用程序提供協調服務的中間件。 主要作用有三點:分布式鎖、注冊中心、配置管理、。 特點有讀寫速度快(內存存儲)、有監聽機制(用于發布訂閱)、保證了順序一致性&#xff…

Android Fragment 全解析

在 Android 開發中,Fragment 是構建靈活界面的核心組件 —— 它既能像 “迷你 Activity” 一樣包含布局和邏輯,又能靈活地嵌入到不同 Activity 中復用。無論是平板的多面板布局,還是手機的單頁切換,Fragment 都能讓界面適配更高效…

0-1BFS(雙端隊列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 電路維修 (Day1)題解)

對于權重為0或1的路徑搜索中&#xff0c;使用雙端隊列可以對最短路問題進行時間復雜度的優化&#xff0c;由于優先隊列的O(longn)級別的插入時間&#xff0c;對于雙端隊列O(1)插入可以將時間復雜度減少至O(M); https://www.luogu.com.cn/problem/P4667 #include<bits/stdc…

基于LNMP架構的分布式個人博客搭建

1.運行環境主機主機名系統服務192.168.75.154Server-WebLinuxWeb192.168.75.155Server-NFS-DNSLinuxNFS/DNS2.基礎配置配置主機名&#xff0c;靜態IP地址開啟防火墻并配置部分開啟SElinux并配置服務器之間使用同ntp.aliyun.com進行時間同步服務器之間使用用ntp.aliyun.com進行時…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的人格品牌化實現路徑研究

摘要&#xff1a;在數字化消費時代&#xff0c;人格品牌化已成為企業突破同質化競爭的核心策略。本文以開源AI智能名片、鏈動21模式與S2B2C商城小程序的融合為切入點&#xff0c;構建“技術賦能-關系重構-價值共生”的人格品牌化理論框架。通過分析用戶觸達、信任裂變與價值沉淀…

設計模式十一:享元模式(Flyweight Pattern)

享元模式是一種結構型設計模式&#xff0c;它通過共享對象來最小化內存使用或計算開銷。這種模式適用于大量相似對象的情況&#xff0c;通過共享這些對象的公共部分來減少資源消耗。基本概念享元模式的核心思想是將對象的內在狀態&#xff08;不變的部分&#xff09;和外在狀態…

Webpack/Vite 終極指南:前端開發的“渦輪增壓引擎“

開篇:當你的項目變成"俄羅斯套娃" "我的index.js怎么引入了87個文件?!" —— 這是每個前端開發者第一次面對復雜項目依賴時的真實反應。別擔心,今天我要帶你認識兩位"打包俠":老牌勁旅Webpack和新銳黑馬Vite 一、構建工具:前端世界的&qu…

Windows 下配置 GPU 用于深度學習(PyTorch)的完整流程

1. 安裝 NVIDIA 顯卡驅動 前往 NVIDIA官網 下載并安裝適合你顯卡型號&#xff08;如 5070Ti&#xff09;的最新版驅動。下載 NVIDIA 官方驅動 | NVIDIA安裝完成后建議重啟電腦。 2. 安裝 CUDA Toolkit 前往 CUDA Toolkit 下載頁。 選擇 Windows、x86_64、你的系統版本&#…

詳解力扣高頻SQL50題之180. 連續出現的數字【困難】

傳送門&#xff1a;180. 連續出現的數字 題目 表&#xff1a;Logs -------------------- | Column Name | Type | -------------------- | id | int | | num | varchar | -------------------- 在 SQL 中&#xff0c;id 是該表的主鍵。 id 是一個自增列。 找出所有至少連續…

VSCode 報錯 Error: listen EACCES: permission denied 0.0.0.0:2288

使用 npm run dev 啟動項目時報錯&#xff1a;error when starting dev server: Error: listen EACCES: permission denied 0.0.0.0:2288at Server.setupListenHandle [as _listen2] (node:net:1881:21)at listenInCluster (node:net:1946:12)at Server.listen (node:net:2044:…

[2025CVPR-圖象超分辨方向]DORNet:面向退化的正則化網絡,用于盲深度超分辨率

1. ?問題背景與挑戰? 盲深度超分辨率&#xff08;Blind Depth Super-Resolution, DSR&#xff09;的目標是從低分辨率&#xff08;LR&#xff09;深度圖中恢復高分辨率&#xff08;HR&#xff09;深度圖&#xff0c;但現有方法在真實場景下面臨顯著挑戰&#xff1a; ?已知…

關系與邏輯運算 —— 寄存器操作的 “入門鑰匙”

前言 哈嘍大家好&#xff0c;這里是 Hello_Embed 的新一篇學習筆記。在前文中&#xff0c;我們學習了如何用結構體指針操作硬件寄存器&#xff0c;而寄存器的配置往往離不開位運算和條件判斷 —— 比如通過邏輯運算精準修改某幾位的值&#xff0c;通過關系運算判斷硬件狀態。這…

使用 Python 將 CSV 文件轉換為帶格式的 Excel 文件

在日常的數據處理和報表生成工作中&#xff0c;CSV 格式因其簡潔性而被廣泛采用。但在展示數據時&#xff0c;CSV 文件往往缺乏格式和結構化樣式&#xff0c;不利于閱讀與分析。相比之下&#xff0c;Excel 格式&#xff08;如 .xlsx&#xff09;不僅支持豐富的樣式設置&#xf…

每天讀本書-《如何度過每天的24小時》

全景式書籍探索框架 1. “這本書是關于什么的&#xff1f;”——核心定位 一句話核心思想&#xff1a;這本書的核心并非教你如何高效地工作&#xff0c;而是倡導你將工作之外的“自由時間”視為一個“內在的另一天”&#xff0c;并投入智力與熱情去經營它&#xff0c;從而獲得精…

前端開發 React 狀態優化

為了更深入地理解 React 狀態管理的性能問題及其解決方案&#xff0c;本文將詳細分析 React Context 和 State 的性能問題&#xff0c;配以示例代碼說明優化策略。之后&#xff0c;討論 Redux 作為不可變庫的性能問題&#xff0c;并引出 Immer 作為優化解決方案。1. React Stat…

劍指offer第2版:雙指針+排序+分治+滑動窗口

一、p129-JZ21使奇數位于偶數前面&#xff08;不考慮相對位置&#xff09;&#xff08;hoare快排雙指針&#xff09; 調整數組順序使奇數位于偶數前面(二)_牛客題霸_牛客網 如果不考慮相對位置的話&#xff0c;那么我們可以模仿hoare快排&#xff0c;使用雙指針的思想&#xf…

14-C語言:第14天筆記

C語言&#xff1a;第14天筆記 內容提要 指針 變量指針與指針變量 指針變量做函數參數指針變量指向數組元素 數組指針與指針數組 數組指針回顧 變量指針與指針變量 變量指針&#xff1a;變量的地址值&#xff08;首地址&#xff09;&#xff0c;本質是指針、地址 指針變量&#…

【筆記】活度系數推導

文章目錄一、理想溶液的假設與局限性1.1 理想溶液的定義1.2 理想溶液的局限性二、活度與活度系數的引入2.1 活度的定義2.2 修正后的化學勢表達式三、活度系數的物理意義四、為什么需要活度系數&#xff1f;4.1 理論需求4.2 擴散理論中的必要性五、活度系數的具體作用5.1 在化學…

基于Docker的GPU版本飛槳PaddleOCR部署深度指南(國內鏡像)2025年7月底測試好用:從理論到實踐的完整技術方案

還是網上沒找到這個基于Docker的GPU版本飛槳PaddleOCR部署教程&#xff0c;于是就有了這一篇。 這個的確坑很多&#xff0c;可能后面變一個版本就不好用了&#xff0c;也是為什么這篇博客不完全粘貼代碼的原因。 端口是示例&#xff0c;可以隨意改。在人工智能與文檔數字化高速…

Python-初學openCV——圖像預處理(三)

目錄 一、邊緣填充 1、邊界復制 2、邊界反射 3、邊界反射101 4、邊界常數 5、邊界包裹 二、透視變換 三、圖像掩膜 1、制作掩膜 2、與運算 3、顏色替換 四、ROI切割 五、圖像添加水印 一、邊緣填充 我們對圖像進行處理后&#xff0c;需要對空出來的區域進行一個填充…