在docker container

时间:2016-09-26 18:19:32

标签: docker docker-compose

我需要在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容器中完成此操作。

1 个答案:

答案 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

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