Docker Network 问题记录
在 docker build 的过程中 apt-get 一直无法 resolve archive.ubuntu.com,一开始以为是 dns 的问题,故做了如下的尝试
- 设置
/etc/default/docker
中的 DOCKER_OPTS,但实践证明,不要轻易改动,容易导致 service docker restart 起不起来 - 设置
/etc/docker/daemon.json
,加入“DNS”配置,实践证明并不 work - 设置
/etc/resolv.conf
中的 nameserver,实践证明并不 work
后来发现,并不是 dns 的问题,因为
docker run busybox ping -c 1 111.13.101.208
(百度 IP),无法 ping 通docker run --network host busybox ping -c 1 111.13.101.208
可以 ping 通
所以,归结下来,是 docker bridge 无法访问外网。临时方案,可以用以下方式解决
- docker run –net/–network host
- docker build –network host
解决 ping 的问题
- 编辑
/etc/ufw/before.rules
,在*filter
前加上
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE COMMIT
- 执行
sudo ufw reload 或者 sudo ufw disable sudo ufw enable
解决 dns 问题
- 编辑
/etc/default/ufw
,设置DEFAULT_FORWARD_POLICY="ACCEPT"
- sudo ufw allow 2375/tcp
- sudo ufw reload