docker - 为什么有人会为两个 docker 容器使用相同的网络命名空间?
问题描述
为什么要通过网络命名空间连接两个 docker 容器,而不仅仅是通过一个网络?
据我所知,唯一的区别是您可以使用 localhost 调用另一个容器。我没有看到任何需要这样做的用例。
这个事情谁有经验?
解决方案
我能想到的一个原因是使用容器中不可用的工具或命令。下面的这个例子直接来自docker run
文档:
网络:集装箱
运行 Redis 容器并绑定 Redis 的示例,
localhost
然后运行redis-cli
命令并通过接口连接到 Redis 服务器localhost
。$ docker run -d --name redis example/redis --bind 127.0.0.1 $ # use the redis container's network stack to access localhost $ docker run --rm -it --network container:redis example/redis-cli -h 127.0.0.1
以类似的方式,可以使用这种技术来调试容器。例如,如果您的容器没有tcpdump
,您可以创建一个包含它的图像:
docker build -t tcpdump - <<EOF
FROM ubuntu
RUN apt-get update && apt-get install -y tcpdump
CMD tcpdump -i eth0
EOF
和run
一个用于调试您的应用程序的容器:
docker run --rm --net=container:my-app tcpdump
如果您的问题更多关于Kubernetes,一些有趣的链接是:
推荐阅读
- android - 如何从我的 android 应用程序中打开 WhatsApp 组
- ios - 在 iOS 中使用 Parse Server 获取子对象和父对象的最佳方法
- javascript - 更新到 jest 24 后 transformIgnorePatterns 不起作用
- docker - 给 docker 更多的磁盘空间用于容器
- python - 从字节流读取时数据损坏
- cypress - 使用 salty- / cypress-testrail-reporter
- mysql - CASE WHEN IN ({set of numbers})
- javascript - 视差背景图像不显示在 iphone 上,但它显示在 android 上我该如何解决这个问题
- c++ - 对“ParMETIS_V3_PartMeshKway”的未定义引用
- c# - 如何使用图标呈现数据绑定的 WinForms DataGridView 列?