首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Docker localhost连接被UFW阻止

Docker localhost连接被UFW阻止
EN

Stack Overflow用户
提问于 2019-01-06 14:25:05
回答 1查看 6.1K关注 0票数 3

情景

我正在学习如何在本地机器上使用docker。将本地计算机设置为仅通过VPN路由流量。默认的UFW策略是DENY所有传入和传出流量(通过VPN除外)。

Problem

当我尝试启动Docker容器docker container run -p 80:80 nginx时,我无法在浏览器中使用本地主机连接到nginx容器。

但是,我可以通过telnet连接到本地nginx容器

代码语言:javascript
复制
$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.

我知道UFW可能导致这种情况的原因是,一旦我禁用了UFW,我就可以在浏览器中毫无问题地连接到本地主机。

问题

当UFW设置为拒绝所有连接时,如何从浏览器连接到本地nginx容器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-07 01:41:03

我找到了我的问题的解决方案。

解决方案

代码语言:javascript
复制
ufw allow out on docker0 from 172.17.0.0/16

由于我知道nginx使用的特定端口,因此我还可以通过执行以下操作来更严格地执行此规则

代码语言:javascript
复制
ufw allow out on docker0 from 172.17.0.0/16 port 80 proto tcp

说明

Docker为容器创建了一个新的接口,您可以通过运行ifconfig查看它

代码语言:javascript
复制
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:a4:5e:e9:9c  txqueuelen 0  (Ethernet)
        RX packets 87  bytes 17172 (17.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 117  bytes 14956 (14.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此接口通过172.17.xxx.xxx路由流量。您可以阅读有关我如何找到网络掩码here的更多信息。

这为我们提供了编写规则所需的所有信息。如果您在不同的端口上发布容器,可以通过执行以下操作来检查端口号和协议:

在容器的港口docker container port {id}中查找您的容器ID

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54059174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档