我有两个 Docker 容器,我试图以特定方式将它们联网。容器 A 在端口 6379 上运行 Redis 服务器。容器 B 正在运行交互式 shell,需要访问 Redis。使用 Docker 的链接功能,容器 B 中的用户可以通过 10.1.0.2:6379 连接到 Redis,该地址通过 Docker 设置的虚拟 eth0 接口传输。
有一个程序将在容器 B 中运行,它希望 Redis 在环回接口的 6379 端口可用。假设此程序无法配置为指向不同的 IP。
我想将流量转发到 127.0.0.1:6379 到 10.1.0.2:6379。我在 NAT 表上尝试了几种 iptables 规则的变体,但是在尝试连接到本地地址/端口时,我要么得到“连接被拒绝”,要么连接永远挂起。用什么iptables规则可以达到这个效果?
这是我尝试过的一件事:
$ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A INPUT -d 10.1.0.2/32 -p tcp -m tcp --dport 6379 -j SNAT --to-source 127.0.0.1
-A OUTPUT -p tcp -m tcp --dport …Run Code Online (Sandbox Code Playgroud) 我正在使用 Chef Solo 为 Ubuntu 12.04 提供基于 Opscode 的“Bento”框的 Vagrant VM。当它完成配置并且我第一次通过 SSH 登录时,MOTD 告诉我有软件包和安全更新。然后我sudo apt-get upgrade手动运行,这会删除后续登录时的消息。有没有办法用 Chef 自动化这一步?“apt”食谱似乎没有处理这个问题。我所有的谷歌搜索只找到关于apt-get update但不是apt-get upgrade。我可以在我的 Chef 配方中执行 apt-get 命令,但是在升级过程中,粉红色屏幕上有一个伪 GUI,我必须在其中选择要安装的驱动器(我认为这称为 GRUB,我是新手到 Ubuntu),我不确定如何使用 Chef 自动化这部分。