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
- 配置 Harbor
在 harbor.yml 文件中配置你的 Harbor 設置。你可以根據需要修改配置文件,例如設置管理員密碼、HTTPS、Harbor 的主機名等。例如,要設置管理員密碼:
# 默認管理員密碼,強烈建議修改此密碼。
harbor_admin_password: StrongPassword01
- 安裝 Harbor
使用 ./install.sh 腳本安裝 Harbor:
./install.sh
- 啟動 Harbor
安裝完成后,啟動 Harbor:
./start.sh
- 檢查 Harbor 狀態
檢查 Harbor 是否正常運行:
./check.sh
- 訪問 Harbor UI
在瀏覽器中訪問 http://your-hostname(替換為你的服務器地址),使用你在 harbor.yml 中設置的用戶名(默認為 admin)和密碼登錄。
以上步驟應該可以幫助你在 CentOS 系統上成功安裝 Harbor。如果你使用的是其他 Linux 發行版(如 Ubuntu、Debian),安裝過程類似,只需確保 Docker 和 Docker Compose 的安裝命令與你的發行版兼容即可。對于其他特定需求(如使用 HTTPS、配置網絡等),請參考 Harbor 的官方文檔進行詳細配置