对我来说,这是一个非常标准的设置,我有一台运行docker和ufw的ubuntu计算机作为我的防火墙。
如果启用了防火墙,则Docker实例将无法连接到外部
$ docker run -i -t ubuntu /bin/bash
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
root@d300c5f17207:/# apt-get update
Err http://archive.ubuntu.com precise InRelease
0% [Connecting to archive.ubuntu.com]
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/precise/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/precise/Release.gpg Temporary failure resolving 'archive.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
这是ufw日志,显示了来自Docker容器的被阻止的连接。
$ sudo tail /var/log/ufw.log
Jun 30 15:41:56 localhost kernel: [61609.503199] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=14886 DF PROTO=UDP SPT=60192 DPT=53 LEN=44
Jun 30 15:42:01 localhost kernel: [61614.500867] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.4.4 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=16137 DF PROTO=UDP SPT=44812 DPT=53 LEN=44
Jun 30 15:42:06 localhost kernel: [61619.498516] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=14887 DF PROTO=UDP SPT=60192 DPT=53 LEN=44
我尝试使用ip添加规则。
$ sudo ufw allow in from 172.16.42.2
$ sudo ufw allow out from 172.16.42.2
并且没有变化仍然被阻止。
如何通过ufw规则轻松地允许从容器到外部的所有连接?
也许这是由于当前版本引起的,但是当前答案在我的html" target="_blank">系统上不起作用(带有基本Ubuntu映像的Docker 0.7.2)。
该解决方案
在官方Docker文档中进行了说明
。
对于懒惰的人:
/etc/default/ufw
以将DEFAULT_FORWARD_POLICY
的值更改为"ACCEPT"
,[sudo] ufw reload
。这可以确保ufw将您的流量转发到Docker的桥接网络(根据我目前对这些事情的了解…)。
对我来说,这是一个非常标准的设置,我有一台运行docker和ufw的ubuntu机器作为我的防火墙。 如果我的防火墙处于启用状态,则 Docker 实例无法连接到外部 下面是 ufw 日志,显示来自 docker 容器的已阻止连接。 我尝试使用ip添加规则。 而且毫无变化依然受阻。 如何使用 ufw 规则允许从容器到外部的所有连接?
问题内容: 我想阻止从外部直接访问docker容器。我使用haproxy,并且只希望访问端口80、443。 我在iptables中添加了以下规则。但是我仍然可以通过不同的端口访问Docker容器。 这可能是由于DOCKER链 我需要创建什么规则来阻止直接访问? 问题答案: 您可以使用命令创建一个网络来连接应用程序和代理,而不必使用IP表来执行此操作。另外,请勿在任何端口上公开应用程序。您应该公开的
我怎样才能禁用Debian的保护来允许外部玩家加入我的服务器?
我在docker容器中的服务器上有Postgresql。如何从外部连接到它,即从本地计算机连接到它?我应该应用什么设置来允许它?
问题内容: 我创建了我的第一个Docker容器,它使用Go运行服务器,但是无法从主机外部访问它。我刚开始使用docker,所以在这里有点迷路了。 因此,我有一个非常简单的Go代码来启动服务器,我构建了Docker映像,该映像安装了Go并在Linux基本映像中构建了代码。我在端口8080上运行服务器,因此我将该端口暴露给运行容器的主机,如下所示: 那行得通, 我可以通过docker的机器IP ( 启
我在Windows Azure中开发了一个驻留在Windows Server 2012机器上的应用程序。应用程序充当许多并发网络连接的服务器,但流量非常低且稀少(客户机每隔几个小时才发送一次信息,但它们确实需要时刻连接,以便接收服务推送的更新)。 在没有流量的情况下几分钟后,客户机/服务器通信似乎被冻结,客户机和服务器之间没有流量流动。实际上,30-60秒后,客户端尝试发送一些东西,他们显示连接已