在docker容器中添加额外的IP到lo接口

我需要在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集装箱完成这个。

首先,linux会默认响应127.0.0.2-4,因为127.0.0.1/8被分配给lo接口。 您可能不需要将地址“添加”到接口,只需使用它们即可。

如果由于某种原因,您需要接口上的特定地址,则需要进入Dockernetworking的内部。 有一个称为pipework的实用程序处理这种types的事情,这些步骤是从代码中解除的。

获取容器的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 

确认新的configuration在那里

 ip netns exec $NSPID ip ad sh lo 

这允许您在容器networking命名空间中进行任何更改。