在試用某家 VPS 廠商的服務時,發現在執行一些服務安裝時,使用 apt-get update -yqq 出現了一些錯誤,在這裡記錄下問題發生的可能原因及解決方案:

WARNING: IPv4 forwarding is disabled. Networking will not work

遇到這問題,解決方式可以直接在系統 sysctl 設定加入允許 ipv4 forward

開啟 sysctl 設定檔案

vim /etc/sysctl.conf

加入以下代碼

net.ipv4.ip_forward=1

接著重啟 network

service network restart

檢查是否正常

net.ipv4.ip_forward=1

apt-get update “-yqq” failed Failed to fetch http://xxx

關於 apt-get update “-yqq” failed Failed to fetch http://xxx 問題發生時,可以從兩個地方著手,第一個是 local 環境的 DNS,第二是 docker

首先,開啟 resolv 設定檔案

sudo vi /etc/resolv.conf

加入以下兩行

nameserver 8.8.8.8
nameserver 8.8.4.4

另外,在 Ubuntu 12.04 之後的版本,改用 network/interfaces 設定,因此如果是這個版本,請開啟

vim /etc/network/interfaces

並且加入以下內容

dns-nameservers 8.8.8.8 8.8.4.4

接著,關於 Docker 的部分,你可以嘗試執行以下命令,試著 ping 看看能否與 Google DNS 溝通

docker run busybox nslookup google.com

如果出現以下訊息,表示這部分有問題

docker run busybox nslookup google.com;; connection timed out; no servers could be reached

接著,變更 docker 的 daemon DNS 設定,在 docker daemon 設定新增兩個 services,第一個是你的 DNS Server,第二個是 Google DNS Server

要建立 daemon.json

vim /etc/docker/daemon.json

新增以下內容

{
    "dns": ["192.10.0.2", "8.8.8.8"]
}

重啟

sudo service docker restart

接著,再次測試是否能 ping 到 google DNS server

docker run busybox nslookup google.com

若出現以下訊息表示已經正常

Server:    192.10.0.2
Address 1: 192.10.0.2
Name:      google.com
...