Jor*_*ans 4 virtualization networking containers namespaces docker
为什么要通过网络命名空间而不是仅通过一个网络连接两个 docker 容器?
据我所知,唯一的区别是您可以使用 localhost 调用另一个容器。我没有看到任何需要这样做的用例。
有任何人对此有经验吗?
我能想到的原因之一是使用容器中不可用的工具或命令。下面的示例直接来自docker run 文档:
网络:容器
示例运行具有 Redis 绑定的 Redis 容器,
localhost然后运行redis-cli命令并通过接口连接到 Redis 服务器localhost。Run Code Online (Sandbox Code Playgroud)$ 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 Code Online (Sandbox Code Playgroud)
和run一个用于调试应用程序的容器:
docker run --rm --net=container:my-app tcpdump
Run Code Online (Sandbox Code Playgroud)
如果您的问题更多关于Kubernetes,一些有趣的链接是:
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |