我需要在 Docker 容器中的环回(lo
)接口(interface)上设置别名。我不知道如何在 docker-compose 文件中执行此操作。
我需要将 127.0.0.2、127.0.0.3 和 127.0.0.4 添加到 lo
接口(interface)。如何在 docker-compose 文件中完成此操作?
在我的 Mac 上,我可以执行类似 ifconfig lo0 alias 127.0.0.4 up
的操作,但我不知道如何在 Docker 容器中完成此操作。
最佳答案
首先,linux默认响应127.0.0.2-4,因为127.0.0.1/8
被分配给lo
接口(interface)。您可能不需要将地址“添加”到接口(interface),只需使用它们即可。
如果由于某种原因您需要接口(interface)上的特定地址,那么就需要进入 Docker 网络的内部。有一个名为 pipework
的实用程序处理这种类型的事情,这些步骤是从它的代码中提取出来的。
获取容器的PID
NSPID=$(docker inspect -f '{{ .State.Pid }}' <container>)
让ip netns
为此容器工作
mkdir -p /var/run/netns
rm -f "/var/run/netns/$NSPID"
ln -s "/proc/$NSPID/ns/net" "/var/run/netns/$NSPID"
将IP地址添加到接口(interface)
ip netns exec $NSPID ip ad add 127.0.0.2/32 dev lo
确认新配置存在
ip netns exec $NSPID ip ad sh lo
这允许您在容器网络命名空间中进行任何更改。
关于docker - 将额外的 IP 添加到 docker 容器中的 lo 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709727/