实验室proxy环境下使用--net解决docker联网问题

环境:

  • ubuntu 16.04 amd64
  • Docker version 17.03.2-ce, build f5ec1e2
  • host没有直连网络,通过proxy与互联网交互

问题:

docker pull ubuntu:16.04之后运行
docker run -it ubuntu:16.04发现
ping, wget, ifconfig均没有安装
apt update 卡住,如下图:

apt update卡住

解决方案

  • 首先,在运行docker时加上--host参数,即运行
    docker run -it --net=host ubuntu:16.04
  • 然后,在docker内容使用和主机相同的代理
1
export http_proxy="http-proxy-address:port"
  • 重新运行apt update,成功,如下图


apt update成功

其他:docker联网的六种解决方法

  • 使用–net:host选项
1
sudo docker run --net:host --name ubuntu_bash -i -t ubuntu:latest /bin/bash
  • 使用–dns选项
1
sudo docker run --dns 8.8.8.8 --dns 8.8.4.4 --name ubuntu_bash -i -t ubuntu:latest /bin/bash
  • 改dns server
1
2
vi /etc/default/docker
#去掉“docker_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"”前的#号
  • 不用dnsmasq
1
2
3
4
5
vi /etc/NetworkManager/NetworkManager.conf
#在dns=dnsmasq前加个#号注释掉
sudo restart network-manager
sudo restart docker
  • 重建docker0网络
1
2
3
4
5
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
  • 直接在docker内修改/etc/hosts

参考blog1,blog2

0%