在Docker容器中禁用IP v6 [已关闭]

yeotifhr  于 11个月前  发布在  Docker
关注(0)|答案(7)|浏览(326)

**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受回答。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
一年前关闭。
社区在4个月前审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question
我在docker主机上启用了ipv6,但是有一个特定的容器在ipv6的情况下会导致问题。有没有一种方法可以通过命令行参数或dockerfile指令来启动不支持ipv6的容器?

x6492ojm

x6492ojm1#

两个选项:
1.使用--dns-opt='options single-request'运行docker。参见文档
1.使用--sysctl net.ipv6.conf.all.disable_ipv6=1运行。请参见讨论here

bfnvny8b

bfnvny8b2#

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

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

字符串
这将在此ip:192.168.99.100上启动容器。

6l7fqoea

6l7fqoea3#

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

luaexgnf

luaexgnf4#

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

docker network create --ipv6=false disable_ipv6

字符串
并运行与:

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

wa7juj8i

wa7juj8i5#

如果您希望在Linux Docker镜像中禁用IPv6,即使文件系统是只读的,这似乎也可以工作。

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

字符串
这些命令是特权命令;如果您不是root,请使用sudo运行。

pn9klfpd

pn9klfpd6#

  • 为我工作:**
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

字符串

zbwhf8kr

zbwhf8kr7#

要禁用ipv6,请运行docker container:
-e“extra_params=--o:net.proto=IPv4”
在Ubuntu 20.04上测试,collabora office container。
更新:但这在运行pgadmin容器时不起作用,因此添加了额外的行:
-e“PGADMIN_LISTEN_ADDRESS=0.0.0.0”\

相关问题