差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
tech:op:docker:network [2017/11/21 14:24:55]
某喵 创建
tech:op:docker:network [2018/07/17 01:54:12] (当前版本)
某喵
行 1: 行 1:
-<​markdown>​ 
- 
 ## Docker Network 问题记录 ## Docker Network 问题记录
  
-- docker run --net host+在 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 - 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
  
 ## Ref ## Ref
  
 +- [offical networking](https://​docs.docker.com/​engine/​userguide/​networking/​)
 +- [infoq docker network](http://​www.infoq.com/​cn/​articles/​docker-network-and-pipework-open-source-explanation-practice#​)
 +- [daocloud docker network](http://​blog.daocloud.io/​docker-bridge/​)
 - [fix-docker-networking-dns](https://​development.robinwinslow.uk/​2016/​06/​23/​fix-docker-networking-dns/​) - [fix-docker-networking-dns](https://​development.robinwinslow.uk/​2016/​06/​23/​fix-docker-networking-dns/​)
- +- [ufw & docker](https:​//​svenv.nl/​unixandlinux/​dockerufw/​)
-</markdown>​+