Docker Push常見報錯及解決方案總結(jié)
一、server gave HTTP response to HTTPS client
(一)問題描述

(二)原因分析
執(zhí)行 docker push 時出現(xiàn)該錯誤,是因為:
- Docker 默認要求 HTTPS,但目標 registry 僅支持 HTTP(未配置 TLS)。
- 未正確配置
insecure-registries,或配置后未生效(可能需重啟 Docker)。
(三)解決方案
1. 配置insecure-registries(推薦測試環(huán)境)
修改 Docker 配置文件(/etc/docker/daemon.json 或 Docker Desktop 的 daemon.json):
{
"insecure-registries": ["your.registry.domain:port"]
}
注意: 如果daemon.json文件中已經(jīng)有其他配置,則追加insecure-registries配置時需要在前一個配置結(jié)尾處添加一個英文逗號?。。?/p>
是否需要重啟?
- Docker Engine < 17.07:必須重啟(
sudo systemctl restart docker)。 - Docker Engine ≥ 17.07:通常自動生效,但
建議重啟確保生效。 - Docker Desktop:一般自動加載,但網(wǎng)絡(luò)相關(guān)更改可能需要重啟。
驗證是否生效:
docker info | grep "Insecure Registries"
2. 配置 Registry 使用 HTTPS(推薦生產(chǎn)環(huán)境)
- 為 registry 配置有效 SSL 證書(如 Let’s Encrypt 或自簽名證書)。
- 確保 Docker 客戶端信任該證書。
3. 臨時解決方案(不推薦生產(chǎn))
強制使用 HTTP:
docker --insecure-registry push your.registry.domain:port/image:tag
(四)總結(jié)
| 方案 | 適用場景 | 是否需要重啟? |
|---|---|---|
insecure-registries | 測試/內(nèi)網(wǎng) | 舊版必須重啟,新版建議重啟 |
| HTTPS 配置 | 生產(chǎn)環(huán)境 | 無需(但需證書) |
--insecure-registry | 臨時測試 | 無需 |
? 最佳實踐:
- 測試環(huán)境 → 用
insecure-registries,并重啟 Docker 確保生效。 - 生產(chǎn)環(huán)境 → 必須配置 HTTPS,避免安全風險。
二、connection refused
(一)問題描述

執(zhí)行curl -XGET http://192.168.XXX.XXX:5000/v2/ catalog命令時會提示拒絕連接

(二)原因分析
當執(zhí)行 docker push 命令時出現(xiàn) “connection refused” 錯誤,通常表示 Docker 客戶端無法連接到 registry 服務器??赡艿脑虬ǎ?/p>
Registry 服務未運行
多數(shù)是這個原因?qū)е?/p>
- 目標 registry 服務沒有啟動
- Registry 容器崩潰或停止
- 網(wǎng)絡(luò)連接問題
- 錯誤的 registry 地址或端口
- 防火墻/安全組阻止訪問
- 網(wǎng)絡(luò)配置問題(DNS 解析失敗等)
- Docker 配置問題
- 未正確配置
insecure-registries(對于 HTTP registry) - Docker 代理設(shè)置不正確
- 未正確配置
- 認證問題
- 未登錄 registry 或認證失敗
- 憑證過期或無效
(三)解決方案
1. 檢查 registry 服務狀態(tài)
# 如果 registry 是本地運行的容器 docker ps | grep registry # 如果沒有運行,啟動 registry docker run -d -p 5000:5000 --name registry registry:2
2. 驗證網(wǎng)絡(luò)連接
# 測試是否能訪問 registry telnet your.registry.domain 5000 # 或 nc -zv your.registry.domain 5000 # 檢查 DNS 解析 nslookup your.registry.domain
3. 檢查 Docker 配置
# 查看當前 Docker 配置
docker info | grep -A 5 "Insecure Registries"
# 如果需要添加 insecure-registry
# 編輯 /etc/docker/daemon.json
{
"insecure-registries": ["your.registry.domain:5000"]
}
# 然后重啟 Docker
sudo systemctl restart docker
4. 檢查認證狀態(tài)
# 查看當前登錄狀態(tài) cat ~/.docker/config.json # 登錄 registry docker login your.registry.domain
5. 檢查防火墻設(shè)置
# Linux 檢查防火墻 sudo iptables -L -n sudo ufw status # 臨時開放端口(示例) sudo ufw allow 5000/tcp
(四)常見場景排查
場景1:推送本地 registry 失敗
# 錯誤示例 docker push localhost:5000/my-image # 解決方案 # 1. 確保 registry 容器正在運行 # 2. 確保使用正確的端口 # 3. 對于 localhost registry,確??蛻舳撕?registry 在同一主機
場景2:推送遠程 registry 失敗
# 錯誤示例 docker push my.company.com:5000/my-image # 解決方案 # 1. 檢查網(wǎng)絡(luò)連通性 # 2. 確保 registry 地址正確 # 3. 檢查是否需要 HTTPS 配置
場景3:認證失敗
# 錯誤示例 Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io: connection refused # 解決方案 # 1. 檢查網(wǎng)絡(luò)連接 # 2. 嘗試 docker login # 3. 檢查 DNS 設(shè)置
(五)高級排查
如果以上方法無效,可以嘗試:
- 查看 Docker 詳細日志
journalctl -u docker.service -n 50 --no-pager
- 啟用 Docker 調(diào)試模式
# 編輯 /etc/docker/daemon.json
{
"debug": true
}
sudo systemctl restart docker
- 使用 curl 直接測試 registry API
curl -v http://your.registry.domain:5000/v2/_catalog
(六)總結(jié)
| 問題類型 | 檢查點 | 解決方案 |
|---|---|---|
| 服務未運行 | docker ps | 啟動 registry 容器 |
| 網(wǎng)絡(luò)問題 | telnet/nc 測試 | 檢查防火墻/網(wǎng)絡(luò)配置 |
| 配置問題 | docker info | 配置 insecure-registries |
| 認證問題 | docker login | 重新登錄 registry |
按照以上步驟逐步排查,應該能解決大多數(shù) “connection refused” 問題。如果問題仍然存在,可能需要檢查更底層的網(wǎng)絡(luò)或系統(tǒng)配置。
以上就是Docker Push常見報錯及解決方案總結(jié)的詳細內(nèi)容,更多關(guān)于Docker Push常見報錯及解決的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker搭建zookeeper集群和kafka集群并使用Java測試詳解
本文詳細介紹了如何在Linux虛擬機中使用Docker搭建Kafka集群環(huán)境,并通過Kafka-Manager進行可視化管理,文章包括了從鏡像拉取、容器網(wǎng)絡(luò)設(shè)置、Zookeeper和Kafka集群搭建到測試和使用Java連接集群的全過程2026-01-01
Ubuntu正確安裝Docker和Docker?Compose的步驟詳細講解
Docker Compose是一個用于定義和運行多容器Docker應用的工具,這篇文章主要介紹了Ubuntu正確安裝Docker和Docker?Compose的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-11-11
docker如何安裝帶postgis插件的postgresql數(shù)據(jù)庫
這篇文章主要介紹了docker如何安裝帶postgis插件的postgresql數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
docker?部署?時序數(shù)據(jù)庫TDengine的思路詳解
TDengineGUI是一個基于electron構(gòu)建的,針對時序數(shù)據(jù)庫TDengine的圖形化管理工具,這篇文章主要介紹了docker?部署?時序數(shù)據(jù)庫TDengine的思路詳解,需要的朋友可以參考下2025-04-04

