当前位置: 首页 > 面试题库 >

使docker使用IPv4进行端口绑定

甘英光
2023-03-14
问题内容

我有docker主机,内部有一个容器。

泊坞窗主机仅在IPv6接口上绑定端口,而不在IPv4上绑定端口。

这是输出

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:55082           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::40280                :::*                    LISTEN      -
tcp6       0      0 :::5432                 :::*                    LISTEN      -
tcp6       0      0 :::40122                :::*                    LISTEN      -
tcp6       0      0 :::36378                :::*                    LISTEN      -
tcp6       0      0 :::40543                :::*                    LISTEN      -
tcp6       0      0 :::111                  :::*                    LISTEN      -

现在我在主机上有40122端口,可与容器上的端口22链接。

我想通过SSH进入该容器,但无法将其绑定到IPv6

这是我的Docker版本 Docker version 1.5.0, build a8a31ef

docker ps

201bde6c839a        myapp:latest   "supervisord -n"    3 weeks ago         Up 2 hours          0.0.0.0:40122->22/tcp, 0.0.0.0:40280->80/tcp, 0.0.0.0:40543->443/tcp   myapp

我跑了 docker run -d -P -p 40122:22

netstat -tlna

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3031          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 :::6379                 :::*                    LISTEN

ps辅助

root         1  0.0  0.8  52440 16668 ?        Ss   00:53   0:03 /usr/bin/python /usr/bin/supervisord -n
root        49  0.0  0.1  17980  3048 ?        S    01:32   0:00 bash
root        64  0.0  0.1  46632  2712 ?        S    01:32   0:00 su -l vagrant
vagrant     65  0.0  0.1  21308  3760 ?        S    01:32   0:00 -su
root       288  0.0  0.1  17980  3088 ?        S    02:01   0:00 bash
root       304  0.0  0.1  46632  2720 ?        S    02:01   0:00 su -l vagrant
vagrant    305  0.0  0.1  21304  3804 ?        S    02:01   0:00 -su
vagrant    308  0.0  3.7 429616 75840 ?        Sl+  02:01   0:05 python ./manage.py shell_plus
root       654  0.0  0.4  47596  9848 ?        S    03:12   0:01 /usr/local/bin/uwsgi --die-on-term --ini /var/www/conf/uwsgi.ini
root       655  0.0  0.3  90280  7732 ?        S    03:12   0:00 nginx: master process /usr/sbin/nginx
www-data   656  0.0  0.1  90600  3624 ?        S    03:12   0:00 nginx: worker process
www-data   657  0.0  0.1  90600  3624 ?        S    03:12   0:00 nginx: worker process
www-data   658  0.0  0.1  90600  3624 ?        S    03:12   0:00 nginx: worker process
www-data   659  0.0  0.2  90940  4500 ?        S    03:12   0:00 nginx: worker process
root       660  0.0  0.2  61372  5332 ?        S    03:12   0:00 /usr/sbin/sshd -D
root       669  0.0  0.4  37004  8892 ?        Sl   03:12   0:01 redis-server *:6379
root       856  8.0  2.8 388720 57792 ?        Sl   04:07   0:18 /usr/local/bin/uwsgi --die-on-term --ini /var/www/conf/uwsgi.ini
root       857  8.0  2.8 388720 57792 ?        Sl   04:07   0:18 /usr/local/bin/uwsgi --die-on-term --ini /var/www/conf/uwsgi.ini
root       858  8.0  2.8 388720 57792 ?        Sl   04:07   0:18 /usr/local/bin/uwsgi --die-on-term --ini /var/www/conf/uwsgi.ini
root       859  8.0  2.8 388720 57792 ?        Sl   04:07   0:18 /usr/local/bin/uwsgi --die-on-term --ini /var/www/conf/uwsgi.ini
vagrant    889  0.0  0.1  18692  2508 ?        R+   04:11   0:00 ps aux

问题答案:

正如@ daniel-
t在评论中指出的那样:github.com/docker/docker/issues/2174是关于仅在中显示对IPv6的绑定netstat,但这不是问题。正如github问题指出的那样:

设置代理时,Docker请求回送地址“ 127.0.0.1”,Linux意识到这是一个存在于IPv6中的地址(如::
0),并且在两个地址上均打开(但它正式是一个IPv6套接字)。当您运行netstat时,它会看到并告诉您它是IPv6-但它仍在侦听IPv4。如果您稍微进行了一些设置,则可能已禁用Linux的此技巧-
通过设置net.ipv6.bindv6only = 1。

换句话说,仅因为您仅将其视为IPv6,否则它仍然能够在IPv4上进行通信,除非您将IPv6设置为仅使用net.ipv6.bindv6only设置绑定到IPv6上。需要明确的是,net.ipv6.bindv6only应该为0-您可以运行sysctl net.ipv6.bindv6only进行验证。



 类似资料:
  • 问题内容: 我尝试使用docker-py(版本1.3.1)启动Docker容器。我想将容器内部端口映射到其他端口,但无法正确公开它们。 我这样做是这样的: 在当前情况下,输出如下: docker ps告诉我: 但是如果我给它映射3000-> 3000,2424-> 2424和2480-> 2480 关键是从命令行我可以使用正确的端口映射启动容器。那是 docker运行-d -p 3001:3000

  • 我最近在Windows10上升级了我的Docker工具箱,现在我的音量挂载不再工作了。我什么都试过了。下面是当前的挂接路径:

  • 问题内容: 我似乎无法找到一种方法来像我一样使用port发布。 使用Docker Compose(以及中的端口映射)会产生来自的“无法连接”错误: 但是,手动将端口传递给时,情况就很好了: 我想念什么? Docker文件 hello_world_flask_app.py docker-compose.yml 问题答案: 默认情况下,不发布服务的端口。您可以传递选项以按docker- compose

  • 问题内容: 由于已弃用,因此我已切换到,但我不知道如何从中打开端口。在我可以这样做: 只要SSH连接打开,它将把端口27017从VirtualBox转发到本地主机27017。请注意,我不是在寻找一种在VirtualBox中永久打开端口的方法。我怎样才能做到这一点? 问题答案: 您仍然可以从docker机器使用的VirtualBox中访问VBoxmanage.exe命令: 使用让您的虚拟机的名称。

  • 6.2. 使用DataBinder进行数据绑定 DataBinder是构建于BeanWrapper之上。[3]。 [3] 更多相关信息请查看the beans章节

  • 问题内容: 条件: 操作系统是 有港口 LED灯泡连接到端口 必要: 使用Java使灯泡闪烁可以吗?对真实,可靠的解决方案感兴趣。 有人做过吗? 我有几种选择:使用和。使用这些解决方案有多成功? 问题答案: 此URL曾经有一个不错的Java并行端口库: http://www.geocities.com/Juanga69/parport/ 现在似乎已经消失了,但是您仍然可以通过Internet Ar