docker - 将额外的 IP 添加到 docker 容器中的 lo 接口(interface)

标签 docker docker-compose

我需要在 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/

相关文章:

django - 警告 : Unexpected input(s) . ..,有效输入位于 GitHub Actions 中(答案正文中的全文)

Docker撰写不持久化数据

docker - Mac版Docker和mkdir权限

java - 在 Eclipse 中运行 docker 构建的项目

docker - 在Docker容器中运行VSTS构建作业

docker - 在服务器上的docker-compose上使用代理

docker - 我们需要将docker-compose.yml转移到生产服务器吗?

docker - 使用 docker-compose 从卷中挂载单个文件

java - Docker compose mysql 容器在依赖它的应用程序之后运行

docker - docker 镜像大小如何影响运行时特性?