网站首页 文章专栏 实验室proxy环境下使用--net解决docker联网问题
实验室proxy环境下使用--net解决docker联网问题
创建于:2018-08-02 16:00:00 更新于:2024-04-19 18:14:50 羽瀚尘 1084
docker docker,proxy


环境:

  • 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内容使用和主机相同的代理

    sh export http_proxy="http-proxy-address:port"

  • 重新运行apt update,成功,如下图


    apt update成功

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

  • 使用–net:host选项

    sh sudo docker run --net:host --name ubuntu_bash -i -t ubuntu:latest /bin/bash

  • 使用–dns选项

    sh sudo docker run --dns 8.8.8.8 --dns 8.8.4.4 --name ubuntu_bash -i -t ubuntu:latest /bin/bash

  • 改dns server

    sh vi /etc/default/docker #去掉“docker_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"”前的#号

  • 不用dnsmasq

    sh vi /etc/NetworkManager/NetworkManager.conf #在dns=dnsmasq前加个#号注释掉 sudo restart network-manager sudo restart docker


  • 重建docker0网络

    sh pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 docker -d

  • 直接在docker内修改/etc/hosts

    参考blog1,blog2