我需要在docker容器中的loopback(lo
)接口上设置别名。我无法弄清楚如何在docker-compose文件中执行此操作。
我需要将127.0.0.2,127.0.0.3和127.0.0.4添加到lo
接口。如何在docker-compose文件中完成?
在我的Mac上,我可以像ifconfig lo0 alias 127.0.0.4 up
这样做,但我无法弄清楚如何在Docker容器中完成此操作。
答案 0 :(得分:2)
首先,默认情况下,linux将响应127.0.0.2-4,因为127.0.0.1/8
接口已分配lo
。您可能不需要"添加"接口的地址,只需使用它们。
如果由于某种原因你需要接口上的特定地址,那么它需要进入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地址添加到界面
ip netns exec $NSPID ip ad add 127.0.0.2/32 dev lo
确认新配置在那里
ip netns exec $NSPID ip ad sh lo
这允许您在容器网络命名空间中进行任何更改。