在試用某家 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
...