我刚试过 Docker。这是令人敬畏的,但似乎不能很好地工作与 ufw。默认情况下,docker 会稍微操作一下 iptables。结果不是一个错误,但不是我所期望的。 欲了解更多细节,请阅读《 UFW + Docker 的危险》
我的目标是建立一个像
Host (running ufw) -> docker container 1 - nginx (as a reverse proxy)
-> docker container 2 - node web 1
-> docker container 3 - node web 2
-> .......
我想通过 ufw 管理传入的流量(例如限制访问) ,因此我不希望 docker 接触我的 iptables。这是我的测试
环境:
--iptables=false
。第一次尝试
docker run --name ghost -v /home/xxxx/ghost_content:/var/lib/ghost -d ghost
docker run --name nginx -p 80:80 -v /home/xxxx/nginx_site_enable:/etc/nginx/conf.d:ro --link ghost:ghost -d nginx
没有运气。第一个命令没问题,但是第二个命令会抛出一个错误
Error response from daemon: Cannot start container
第二次尝试
然后我发现了这个: 无法将容器与—— iptables = false # 12701链接
运行以下命令后,一切看起来都没问题。
sudo iptables -N DOCKER
但是,我注意到我不能在容器内建立任何出站连接,例如:
xxxxg@ubuntu:~$ sudo docker exec -t -i nginx /bin/bash
root@b0d33f22d3f4:/# ping 74.125.21.147
PING 74.125.21.147 (74.125.21.147): 56 data bytes
^C--- 74.125.21.147 ping statistics ---
35 packets transmitted, 0 packets received, 100% packet loss
root@b0d33f22d3f4:/#
如果我从 Docker 守护进程中删除 --iptables=false
,那么容器的互联网连接将恢复正常,但 ufw 将不能“正常”工作(嗯... 根据我的定义)。
那么,Docker + ufw 的最佳实践是什么? 有人能提供一些帮助吗?