linux 環境下Docker 安裝

Docker在線安裝

參考 :https://juejin.cn/book/6844733746462064654/section/6844733746545950734#heading-0

Ubuntu 環境下安裝

$  apt-get install apt-transport-https ca-certificates curl software-properties-common
$   install -m 0755 -d /etc/apt/keyrings
$  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | $  gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo   "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" |   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ apt-get update
$ apt-get install docker-ce
$ apt-cache policy docker-ce  # 查看可用版本
$ sudo systemctl enable docker
$ systemctl start docker

上述列出的命令是一套完整的在 Ubuntu 系統上安裝 Docker Engine 的標準流程。下面我為你逐條解釋這些命令的作用,并提供一些注意事項和最佳實踐建議:

命令詳解

安裝 Docker 安裝過程中所需的依賴包

apt-get install apt-transport-https ca-certificates curl software-properties-common

作用:安裝 Docker 安裝過程中所需的依賴包。
apt-transport-https:允許 APT 使用 HTTPS 源。
ca-certificates:用于處理 SSL/TLS 證書。
curl:用于下載遠程文件(如 GPG 密鑰)。
software-properties-common:提供 add-apt-repository 命令。

添加 Docker 官方的 GPG 公鑰

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

下載并添加 Docker 官方的 GPG 公鑰,用于驗證軟件包完整性

注意:apt-key 已被標記為過時(deprecated)。官方推薦將密鑰保存為單獨的 .gpg 文件放在 /etc/apt/trusted.gpg.d/ 目錄中,所以推薦上述命令操作

添加 Docker 的官方 APT 軟件源

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

作用:添加 Docker 的官方 APT 軟件源。

作用:添加 Docker 的官方 APT 軟件源。
$(lsb_release -cs):自動獲取當前 Ubuntu 的代號(如 jammy、focal 等)。
?? 注意:與上一條類似,add-apt-repository 可能不會設置密鑰環路徑。建議改用直接寫入 sources.list.d 的方式。

echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

刷新 APT 包索引,添加的 Docker 源

sudo apt-get update

作用:刷新 APT 包索引,使系統識別新添加的 Docker 源。

安裝 Docker Community Edition(社區版)

apt-get install docker-ce

可選:安裝特定版本:

apt-cache policy docker-ce  # 查看可用版本
sudo apt-get install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

設置 Docker 開機自啟。

sudo systemctl enable docker

立即啟動 Docker 服務

sudo systemctl start docker

驗證安裝是否成功:

sudo docker version
sudo docker run hello-world

檢查 Docker 狀態

systemctl status docker

將當前用戶加入 docker 用戶組:

避免每次使用 sudo(可選):

sudo usermod -aG docker $USER

最佳實踐總結(2025 年推薦方式)

# 1. 安裝依賴
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-core# 2. 添加 GPG 密鑰(現代方式)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# 3. 添加源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 4. 更新并安裝
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 5. 啟動服務
sudo systemctl enable docker
sudo systemctl start docker# 6. 驗證
docker version
docker run --rm hello-world

Docker 鏡像加速器

網易云、騰訊云、阿里云、USTC(中科大)
科大鏡像:https://docker.mirrors.ustc.edu.cn/
網易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

通過修改daemon配置文件/etc/docker/daemon.json來使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://cwd3by99.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

常見問題

登錄鏡像倉庫登錄不上

報錯如下

Get “https://xxxxx/v2/”: net/http: request canceled while waiting for
connection (Client.Timeout exceeded while awaiting headers)

表明 Docker 守護進程在嘗試訪問某個鏡像倉庫時超時,具體是:

https://xxxxx/v2/

錯誤原因分析

  • 網絡不通或防火墻限制
    • 你的機器無法訪問 www-docker.pkg.devops.avic-digital.com
    • 可能被防火墻、代理、DNS 或公司內網策略阻止。
  • 檢查是否需要使用 HTTP/HTTPS 代理 才能出網。
    • DNS 解析失敗
    • 域名 www-docker.pkg.devops.avic-digital.com 無法解析為 IP 地址。
    • 使用 nslookup 或 dig 檢查。
  • 目標服務不可達或宕機
    • 私有 registry 服務可能暫時不可用。
    • 聯系 DevOps 團隊確認服務狀態。
  • HTTPS 證書問題(中間人代理)
    • 如果公司使用透明代理進行 HTTPS 攔截,Docker 可能因證書不信任而失敗。
    • 需要將企業根證書添加到 Docker 的信任鏈中。
  • Docker 配置了錯誤的鏡像倉庫地址
    • 可能你在 ~/.docker/config.json 或命令行中指定了這個私有倉庫,但實際不需要。
    • 超時時間過短(少見)
      默認請求頭等待時間約 30 秒。若網絡極慢或服務器響應慢,可能超時。

排查與解決步驟

? 1. 檢查域名是否能解析
bash
深色版本

nslookup xxxxxxxxxxxxxxxxxx

dig xxxxxxxxxxxxxxxxxxxxxxxx

👉 如果無返回結果 → DNS 問題。

? 2. 測試網絡連通性
bash
深色版本

ping www-docker.pkg.devops.avic-digital.com

curl -v https://www-docker.pkg.devops.avic-digital.com/v2/

如果 curl 卡住或超時 → 網絡不通或被攔截。
如果返回 401 Unauthorized 或 404 → 至少說明能通,服務在運行。
如果提示 SSL certificate problem → 證書問題。
? 3. 檢查是否需要代理
如果你在公司內網,很可能需要設置代理才能訪問外部服務。

臨時測試(通過 curl 設置代理):
bash
深色版本

curl -x http://proxy.company.com:8080 -v https://www-docker.pkg.devops.avic-digital.com/v2/

如果這樣能通 → 你需要為 Docker 配置代理。

為 Docker daemon 配置代理(Ubuntu systemd):
創建配置目錄:
bash

sudo mkdir -p /etc/systemd/system/docker.service.d

創建代理配置文件:

bash
深色版本

sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy.company.com:8080"
Environment="HTTPS_PROXY=http://proxy.company.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.company.com"
EOF

?? 替換 http://proxy.company.com:8080 為你們公司的實際代理地址。

重啟 Docker:

bash
深色版本

sudo systemctl daemon-reload
sudo systemctl restart docker

? 4. 檢查 Docker 是否被配置了鏡像倉庫(mirror/registry-mirror)
查看是否有錯誤配置:

bash

cat /etc/docker/daemon.json

檢查內容是否包含類似:

json
深色版本

{"registry-mirrors": ["https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
}

如果是 不必要的配置,請刪除或注釋掉,然后重啟 Docker:

bash
深色版本

sudo systemctl restart docker

? 5. 檢查 ~/.docker/config.json
bash
深色版本

cat ~/.docker/config.json

看是否配置了登錄這個 registry:

json
深色版本

{"auths": {"xxxxxxxxxxxxxxxxx": {"auth": "xxx"}}
}

如果你沒有權限或暫時不需要使用它,可以備份后刪除該文件。

Docker 離線安裝

安裝 Docker Compose

Compose 項目是 Docker 官方的開源項目,負責實現對 Docker 容器集群的快速編排

使用一個 Dockerfile 模板文件,可以讓用戶很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上后端的數據庫服務容器,甚至還包括負載均衡容器等

Compose 恰好滿足了這樣的需求。它允許用戶通過一個單獨的 docker-compose.yml 模板文件來定義一組相關聯的應用容器為一個項目

Compose 中有兩個重要的概念:

服務 (service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例
項目 (project):由一組關聯的應用容器組成的一個完整業務單元,在 docker-compose.yml 文件中定義

在線安裝 Docker Compose

Harbor 使用 Docker Compose 來管理容器,因此需要安裝 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安裝好后使用
docker-compose -v 查看安裝的docker-compose 版本

docker-compose -v 

docker-compose version 1.29.2, build 5becea4c

Harbor 鏡像倉庫安裝

Harbor 是一個用于存儲和分發 Docker 鏡像的企業級 Registry 服務器,它包括了諸如安全、身份認證、管理等功能。Harbor 支持多種操作系統,包括 Linux。如果你想在基于 CentOS 的系統中安裝 Harbor,

Harbor 需要提前安裝docker、Docker Compose

下載 Harbor 安裝包

訪問 Harbor 官方網站 或 GitHub 倉庫 獲取最新的 Harbor 安裝包。選擇適合你操作系統的版本下載。例如,對于 Linux,你可以下載 harbor-offline-installer-xxx.tgz 文件。

wget https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz
tar xzvf harbor-offline-installer-v2.5.1.tgz
cd harbor
  1. 配置 Harbor
    在 harbor.yml 文件中配置你的 Harbor 設置。你可以根據需要修改配置文件,例如設置管理員密碼、HTTPS、Harbor 的主機名等。例如,要設置管理員密碼:
# 默認管理員密碼,強烈建議修改此密碼。
harbor_admin_password: StrongPassword01
  1. 安裝 Harbor
    使用 ./install.sh 腳本安裝 Harbor:
./install.sh
  1. 啟動 Harbor
    安裝完成后,啟動 Harbor:
./start.sh
  1. 檢查 Harbor 狀態
    檢查 Harbor 是否正常運行:
./check.sh
  1. 訪問 Harbor UI
    在瀏覽器中訪問 http://your-hostname(替換為你的服務器地址),使用你在 harbor.yml 中設置的用戶名(默認為 admin)和密碼登錄。

以上步驟應該可以幫助你在 CentOS 系統上成功安裝 Harbor。如果你使用的是其他 Linux 發行版(如 Ubuntu、Debian),安裝過程類似,只需確保 Docker 和 Docker Compose 的安裝命令與你的發行版兼容即可。對于其他特定需求(如使用 HTTPS、配置網絡等),請參考 Harbor 的官方文檔進行詳細配置

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

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

相關文章

Netty從0到1系列之Netty啟動細節分析

文章目錄一、Netty服務器端啟動細節分析1.1 實現一個簡單的http服務器1.2 服務器端啟動細節分析1.3 創建與初始化 NioServerSocketChannel1.3.1 **通過反射工廠創建 Channel**&#xff1a;1.3.2 **初始化 Channel**1.4 注冊到 Boss EventLoopGroup1.4.1 **異步提交注冊任務**1.…

一個海康相機OCR的程序

這是一個極其復雜和龐大的??機器視覺檢測程序??&#xff0c;其核心特點是??多重冗余、條件判斷和流程分支??。它并非一個簡單的線性流程&#xff0c;而是一個為應對各種復雜工業場景&#xff08;如光照變化、產品位置偏移、識別難度高等&#xff09;而設計的??決策網…

深入解析:preload與prefetch的區別及最佳實踐

在前端性能優化領域&#xff0c;資源加載策略直接影響頁面的加載速度和用戶體驗。<link>標簽的preload和prefetch屬性是瀏覽器提供的兩種關鍵資源預加載機制&#xff0c;它們都能提前加載資源&#xff0c;但適用場景和行為邏輯卻大不相同。本文將從定義、觸發時機、優先級…

[論文閱讀] 人工智能 + 軟件工程(漏洞檢測)| 工業場景漏洞檢測新突破:CodeBERT跨領域泛化能力評估與AI-DO工具開發

工業場景漏洞檢測新突破&#xff1a;CodeBERT跨領域泛化能力評估與AI-DO工具開發 論文信息 論文原標題&#xff1a;Cross-Domain Evaluation of Transformer-Based Vulnerability Detection: Open-Source vs. Industrial Data引文格式&#xff08;APA&#xff09;&#xff1a;[…

【層面一】C#語言基礎和核心語法-01(類型系統/面向對象/異常處理)

文章目錄1 類型系統1.1 為什么需要類型&#xff1f;1.2 .NET 類型系統的兩大支柱&#xff1a;CTS 和 CLS1.3 最根本的分類&#xff1a;值類型 vs 引用類型1.4 內置類型 vs. 自定義類型1.5 類型轉換1.6 通用基類&#xff1a;System.Object2 面向對象編程2.1 類和對象2.2 接口和類…

Deepseek構建本地知識庫

一.本地部署Deepseek Ollama 介紹 目前市面上主流的&#xff0c;成本最低的部署本地大模型的方法就是通過 Ollama 了&#xff1a; Ollama 是一個開源的本地大語言模型運行框架&#xff0c;專為在本地機器上便捷部署和運行大型語言模型&#xff08;LLM&#xff09;而設計。 核心…

idea自動編譯,idea不重啟項目,加載修改的內容

idea自動編譯&#xff0c;idea不重啟項目&#xff0c;加載修改的內容

幸運盒項目—測試報告

幸運盒測試報告 目錄幸運盒測試報告一. 概要二. 測試環境三. 測試用例腦圖四. 測試用例1. 功能測試1. 注冊功能2. 密碼登錄功能3. 驗證碼登錄功能4. 注冊用戶功能5. 創建獎品功能6. 新建抽獎活動功能8. 獎品列表9. 活動列表2. 界面測試1. 注冊界面2. 密碼登錄界面3. 驗證碼登錄…

Estimator and Confidence interval

Coefficient of determination and sample correlation coefficient R2SSRSSTR^2 \frac{SSR}{SST}R2SSTSSR? SSR∑i1n((yi^?yˉ)2)SSR\sum_{i1}^n((\hat{y_{i}}-\bar{y})^2)SSR∑i1n?((yi?^??yˉ?)2) SST∑i1n((yi?yˉ)2)SST\sum_{i1}^n((y_{i}-\bar{y})^2)SST∑i1n?…

【網絡編程】TCP 服務器并發編程:多進程、線程池與守護進程實踐

半桔&#xff1a;個人主頁&#x1f525; 個人專欄: 《Linux手冊》《手撕面試算法》《網絡編程》&#x1f516;很多人在喧囂聲中登場&#xff0c;也有少數人在靜默中退出。 -張方宇- 文章目錄前言套接字接口TCP服務器TCP 多進程TCP 線程池重寫Task任務放函數對象客戶端重連進程…

還停留在批處理時代嗎?增量計算架構詳解

在當今的數字化環境中&#xff0c;企業不再只是一味地囤積數據——他們癡迷于盡快把數據轉化為可付諸行動的洞察。真正的優勢來自于實時發現變化并立即做出反應&#xff0c;無論是調整推薦策略還是規避危機。 十年前&#xff0c;硬件與平臺技術的進步讓我們能夠從容應對海量數…

DataSet-深度學習中的常見類

深度學習中Dataset類通用的架構思路 Dataset 類設計的必備部分 1. 初始化 __init__ 配置和路徑管理&#xff1a;保存 config&#xff0c;區分 train/val/test 路徑。加載原始數據&#xff1a;CSV、JSON、Numpy、Parquet 等。預處理器/歸一化器&#xff1a;如 StandardScaler&am…

【VC】 error MSB8041: 此項目需要 MFC 庫

? 目錄 ?&#x1f6eb; 導讀問題背景環境1?? 核心原因&#xff1a;MFC 組件缺失或配置不當2?? 解決方案&#xff1a;安裝 MFC 組件并驗證配置2.1 步驟1&#xff1a;檢查并安裝 MFC 組件2.2 步驟2&#xff1a;檢查并修正項目配置2.3 步驟3&#xff1a;針對特定場景的補充方…

Java零基礎學習Day10——面向對象高級

一.認識final1.含義final關鍵字是最終的意思&#xff0c;可以修飾&#xff1a;類&#xff0c;方法&#xff0c;變量修飾類&#xff1a;該類被稱為最終類&#xff0c;特點是不能被繼承修飾方法&#xff1a;該方法被稱為最終方法&#xff0c;特點是不能被重寫了修飾變量&#xff…

Qt中解析JSON文件

Qt中解析JSON文件 在Qt中解析JSON字符串主要有兩種方式&#xff1a;使用QJsonDocument類或使用QJsonDocument結合QVariant。以下是詳細的解析方法&#xff1a; 使用QJsonDocument&#xff08;推薦&#xff09; 這種方式的主要相關類如下&#xff1a; QJsonDocument: QJsonDocum…

深度解析HTTPS:從加密原理到SSL/TLS的演進之路

在互聯網時代,數據安全已成為不可忽視的基石。當我們在瀏覽器地址欄看到"https://"前綴和那把小小的綠色鎖圖標時,意味著正在進行一場受保護的通信。但這層保護究竟是如何實現的?HTTPS、SSL和TLS之間又存在著怎樣的聯系與區別?本文將深入剖析這些技術細節,帶你全…

Flutter 官方 LLM 動態 UI 庫 flutter_genui 發布,讓 App UI 自己生成 UI

今日&#xff0c;Flutter 官方正式發布了它們關于 AI 大模型的 package 項目&#xff1a; genui &#xff0c;它是一個非常有趣和前沿的探索類型的項目&#xff0c;它的目標是幫助開發者構建由生成式 AI 模型驅動的動態、對話式用戶界面&#xff1a; 也就是它與傳統 App 中“寫…

Redis常用數據結構及其底層實現

Redis常用數據結構主要有String List Set Zset Hash BitMap Hyperloglog Stream GeoString:Redis最常用的一種數據結構,Sting類型的數據存儲結構有三種int、embstr、raw1.int:用來存儲long以下的整形embstr raw 都是用來存字符串&#xff0c;其中小于44字節的字符串用embstr存 …

O3.4 opencv圖形拼接+答題卡識別

一圖形拼接邏輯導入必要的庫pythonimport cv2 import numpy as np import sys導入cv2庫用于圖像處理&#xff0c;numpy庫用于數值計算&#xff0c;sys庫用于與 Python 解釋器進行交互&#xff0c;例如退出程序。定義圖像顯示函數def cv_show(name, img):cv2.imshow(name, img)c…

SQL注入常見攻擊點與防御詳解

SQL注入是一種非常常見且危險的Web安全漏洞。攻擊者通過將惡意的SQL代碼插入到應用程序的輸入參數中&#xff0c;欺騙后端數據庫執行這些非預期的命令&#xff0c;從而可能竊取、篡改、刪除數據或獲得更高的系統權限。以下是詳細、準確的SQL注入點分類、說明及舉例&#xff1a;…