在docker容器中禁用ip v6

时间:2015-06-10 07:49:46

标签: docker ipv6

我在docker主机上启用了ipv6但是有一个特定容器,其中ipv6导致问题。有没有办法通过命令行参数或dockerfile指令启动没有ipv6支持的容器?

6 个答案:

答案 0 :(得分:7)

两个选项:

  1. 使用--dns-opt='options single-request'运行docker。请参阅docs
  2. 使用--sysctl net.ipv6.conf.all.disable_ipv6=1运行。请参阅讨论here

答案 1 :(得分:5)

有点棘手。我刚才遇到了同样的问题,我所做的就是用ip运行容器:

docker run --name YourDockerContainer -p 192.168.99.100:80:80

这将启动此ip上的容器:192.168.99.100

答案 2 :(得分:2)

不幸的是,没有:--ipv6是一个守护程序范围的标志,无法在每个容器的基础上覆盖。

答案 3 :(得分:1)

为我工作:

docker run -d -i -t  --name django_1.0 --sysctl 
net.ipv6.conf.all.disable_ipv6=1 -p 192.168.20.148:8000:8000/tcp -p 
192.168.20.148:8000:8000/udp -p 192.168.20.148:3000:3000/tcp -p 
192.168.20.148:3000:3000/udp IMAGE_NAME

root:~# netstat -tlp | grep -i docker

tcp  0  0 ip-192-168-20-148.:8000 *:*    LISTEN      4598/docker-proxy

tcp  0  0 ip-192-168-20-148.:3000 *:*    LISTEN      4642/docker-proxy

答案 4 :(得分:-1)

要禁用 ipv6,请使用以下命令运行 docker 容器:

-e "extra_params=--o:net.proto=IPv4"

在 Ubuntu 20.04、collabora 办公容器上测试。

更新: 但这在运行 pgadmin 容器时不起作用,因此添加了额外的行:

-e "PGADMIN_LISTEN_ADDRESS=0.0.0.0" \

答案 5 :(得分:-2)

使用--sysctl net.ipv6.conf.all.disable_ipv6=1选项运行docker命令时,如果仍然失败,则传递以下参数。

--sysctl net.ipv6.conf.all.disable_ipv6=0