Docker 安裝與運行常見錯誤排除教學|完整原因分析與解決步驟

Docker 安裝與運行常見錯誤排除教學|完整原因分析與解決步驟

本文整理 Docker 安裝及運行時最常見錯誤,包含安裝依賴問題、daemon 啟動錯誤、容器 crash、端口衝突、storage 驅動與 network/DNS 問題,每個錯誤附原因分析、判斷方法與解決步驟,方便快速排錯。

Docker 安裝階段常見錯誤

錯誤一:套件依賴安裝失敗


# apt-get install docker-ce 失敗
# 常見訊息: unmet dependencies

原因:系統套件版本過舊或缺少依賴。

判斷:檢查系統版本與套件列表:apt-cache policy docker-ce

解決:


sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
sudo apt install docker-ce

錯誤二:GPG key 或 repository 設定錯誤


# 錯誤訊息: NO_PUBKEY 或 repository not found

原因:官方源 GPG key 錯誤或 repository 地址錯誤

判斷:檢查 /etc/apt/sources.list.d/docker.list 與 GPG key

解決:


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo add-apt-repository \
   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce

錯誤三:防火牆阻擋或 iptables 錯誤


# 安裝後 daemon 無法啟動或容器無法連線

原因:防火牆規則或 iptables 阻擋 Docker 網路

判斷:檢查防火牆狀態:sudo ufw status

解決:


sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp
sudo ufw reload
sudo systemctl restart docker

Docker daemon 常見錯誤與排查解決方法

錯誤一:Cannot connect to the Docker daemon


# Cannot connect to the Docker daemon at unix:///var/run/docker.sock

原因:daemon 未啟動或 socket 權限不足

判斷:systemctl status docker, journalctl -u docker

解決:


sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

錯誤二:permission denied while trying to connect


# 權限不足

原因:使用者不在 docker 群組

判斷:groups $USER

解決:


sudo usermod -aG docker $USER
newgrp docker   # 或重新登入
docker ps

錯誤三:failed to start daemon: no space left on device


# 磁碟空間不足

原因:磁碟已滿,daemon 無法啟動

判斷:df -h, docker system df

解決:docker system prune -a –volumes # ⚠️ 會清除所有未使用資料 sudo systemctl restart docker

錯誤四:Error starting daemon: failed to initialize


# daemon 初始化失敗

原因:daemon.json 配置錯誤或 storage driver 不支援

判斷:cat /etc/docker/daemon.json, docker info | grep “Storage Driver”

解決:修正配置或使用支援的 storage driver (overlay2)

錯誤五:Bind for 0.0.0.0:2375 failed


# 端口被占用

原因:端口已被其他進程使用

判斷:sudo lsof -i :2375

解決:sudo kill 1234 # 替換為實際 PID sudo systemctl restart docker

錯誤六:overlay2 not supported


# storage 驅動不支援

原因:文件系統不支援 overlay2

判斷:docker info | grep “Storage Driver”

解決:修改 daemon.json 或更換支援 overlay2 的文件系統

其他運行階段常見錯誤案例

Container Crash(Exited)


docker ps -a
docker logs my_container    # 替換為實際容器名稱
docker start my_container

原因:應用程式崩潰或依賴缺失

處理方式:查看日誌修正環境或依賴,重啟容器

Port 衝突


sudo lsof -i :80
docker run -d -p 8080:80 --name web nginx

原因:端口被占用

處理方式:釋放端口或修改映射

Image 拉取錯誤


docker pull nginx

原因:image 名稱錯誤或網路問題

處理方式:確認名稱與網路,重新拉取

Network 無法連線


docker network ls
docker network inspect my_network   # 替換為實際 network

原因:容器不在同一 network 或網路配置錯誤

處理方式:確認 network,必要時重建

DNS 解析失敗


docker run -d --dns 8.8.8.8 --name test-nginx nginx

原因:DNS 配置錯誤或容器無法解析

處理方式:指定有效 DNS

FAQ 常見問題

Docker daemon 無法啟動怎麼辦?

通常是 daemon 未啟動、磁碟空間不足、配置錯誤或端口占用。

解決方式:

  1. systemctl status docker, journalctl -u docker 查看狀態與日誌
  2. 清理磁碟或修正配置
  3. 釋放占用端口
  4. sudo systemctl restart docker 重新啟動
permission denied 怎麼解?

表示使用者不在 docker 群組。

解決方式:

  1. sudo usermod -aG docker $USER
  2. newgrp docker 或重新登入
  3. docker ps 確認權限更新
Container 為什麼會停止?

通常因應用程式崩潰或缺依賴。

解決方式:

  1. docker logs my_container 查看日誌
  2. 修正環境或依賴
  3. docker start my_container 重啟容器
Port 衝突怎麼辦?

端口被其他程序占用,容器無法啟動。

解決方式:

  1. sudo lsof -i :80 查看占用
  2. 修改映射端口 docker run -d -p 8080:80 –name web nginx
Image 拉不到怎麼辦?

可能是名稱錯誤或網路問題。

解決方式:

  1. 確認 image 名稱與 tag
  2. 檢查網路連線
  3. 重新拉取 docker pull <image_name>
Network 連線問題怎麼排?

容器無法互通通常是 network 配置錯誤。

解決方式:

  1. docker network ls 列出網路
  2. docker network inspect my_network 查看設定
  3. 必要時重建 network
有哪些 storage 驅動錯誤?

通常出現 overlay2 not supported 或初始化失敗。

解決方式:

  1. 修改 daemon.json storage-driver
  2. 確保文件系統支援 overlay2 (xfs/ext4)
如何判斷 Docker 是否正常?

可以透過容器與系統資訊確認:

  1. docker ps 列出運行容器
  2. docker info 查看系統資訊
  3. 檢查 daemon 狀態與日誌
    PAGE TOP