gpt4 book ai didi

Docker:如何将容器内的 IP 重定向到另一个 IP

转载 作者:行者123 更新时间:2023-12-02 02:25:27 25 4
gpt4 key购买 nike

我从未接触过 Docker 的 iptables,但现在我想我必须接触一下。在特殊容器内,程序/脚本调用 IP 57.55.10.210我无法改变它(另一个故事)。我想重定向调用将此 IP 更改为 192.168.38.13。如何做到这一点?这会对其他容器产生影响吗?提前致谢!弗兰克

最佳答案

一种方法是在容器镜像中安装 iptables 并为容器分配内核 capability(7) NET_ADMIN

docker run --cap-add=NET_ADMIN ...

请参阅docker run reference和/或docker-compose file reference

然后,您可以添加入口点脚本、cmd 或 .rules 文件,在启动容器时从中加载规则集。或者直接将规则嵌入到图像中。在您的情况下,入口点脚本的内容如下所示:

iptables -t nat -A PREROUTING -d 57.55.10.210 -j DNAT --to-destination 192.168.38.13
iptables -t nat -A POSTROUTING -s 192.168.38.13 -j SNAT --to-source 57.55.10.210

或者使用 .rules 文件,在入口点脚本中执行以下操作:

/sbin/iptables-restore /some-mounted-volume-or-file

为了获取规则文件,您可以调用容器的单次运行:

docker run --cap-add=NET_ADMIN --rm somethingwith/iptables /bin/bash -c "iptables -t nat -A PREROUTING -d 57.55.10.210 -j DNAT --to-destination 192.168.38.13; iptables -t nat -A POSTROUTING -s 192.168.38.13 -j SNAT --to-source 57.55.10.210; /sbin/iptables-save" > outside-of-container.rules

这会让你得到类似的东西:

# Generated by iptables-save v1.6.1 on Fri Feb  8 14:42:52 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 57.55.10.210/32 -j DNAT --to-destination 192.168.38.13
-A POSTROUTING -s 192.168.38.13/32 -j SNAT --to-source 57.55.10.210
COMMIT
# Completed on Fri Feb 8 14:42:52 2019

据我所知,这种方法不应干扰主机上的其他容器。

关于Docker:如何将容器内的 IP 重定向到另一个 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com