在 docker 容器中禁用 ip v6 [已关闭]

问题描述 投票:0回答:7

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

docker ipv6
7个回答
25
投票

两种选择:

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

10
投票

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

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

这将在此 ip 上启动容器:

192.168.99.100


7
投票

不幸的是没有:

--ipv6
是一个守护进程范围的标志,不能在每个容器的基础上覆盖。


6
投票

我认为使用 Docker 禁用 ipv6 的方法是创建一个没有 ipv6 的网络。

例如

docker network create --ipv6=false disable_ipv6

并运行:

docker run --network disable_ipv6
docker build --network disable_ipv6

5
投票

如果您想在 Linux Docker 映像中禁用 IPv6,即使文件系统是只读的,这似乎也能工作。

sysctl net.ipv6.conf.all.disable_ipv6=1
sysctl net.ipv6.conf.default.disable_ipv6=1

这些命令是有特权的;如果您不是

sudo
,请使用
root
运行。


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

-2
投票

要禁用 ipv6,请运行 docker 容器:

-e“extra_params=--o:net.proto=IPv4”

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

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

-e“PGADMIN_LISTEN_ADDRESS=0.0.0.0”\

© www.soinside.com 2019 - 2024. All rights reserved.