首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头:如何找到我的集装箱所在的网络?

码头:如何找到我的集装箱所在的网络?
EN

Stack Overflow用户
提问于 2017-05-11 00:19:23
回答 7查看 128.3K关注 0票数 107

我试着去了解关于码头的一些事情:

  1. 怎样才能找到我的容器所在的网络?
  2. 我可以动态地分离我的容器并连接到另一个网络上吗?多么?
  3. 如果我有两个容器在运行,如何检查它们是否在同一个网络中?我能从另一个人那里选一个吗?
EN

回答 7

Stack Overflow用户

发布于 2017-05-11 00:43:42

假设您的容器名为c1,要查看容器所在的网络是什么

代码语言:javascript
运行
复制
$ docker inspect c1 -f "{{json .NetworkSettings.Networks }}"

若要将容器与第一个网络断开(假设您的第一个网络称为test-net):

代码语言:javascript
运行
复制
$ docker network disconnect test-net c1

然后将其重新连接到另一个网络(假设它称为test-net-2):

代码语言:javascript
运行
复制
$ docker network connect test-net-2 c1

若要检查网络中是否有两个容器(或更多)在一起,请执行以下操作:

代码语言:javascript
运行
复制
$ docker network inspect test-net -f "{{json .Containers }}"
票数 151
EN

Stack Overflow用户

发布于 2017-05-11 00:43:02

  1. 网络在docker container inspect $id输出中是可见的,其中$id是容器id或容器名称。该名称列在NetworkSettings ->网络部分下。可以用格式字符串输出: 码头容器检查\-格式{{range $net,$v := .NetworkSettings.Networks}{printf "%s\n“$net}{end}‘\ $container_name
  2. 可以使用docker network connect $network_name $container_name将网络添加到容器中。类似地,docker network disconnect $network_name $container_name将断开容器与码头网络的连接。
  3. 如果容器在同一个码头网络上,并且您还没有禁用ICC,则容器可以通过IP地址相互切换。如果您不在名为"bridge“的默认网络上,则可以使用包含的DNS发现来ping并通过容器名称或网络别名连接到容器。您用docker network create $network_name创建的任何新网络都打开了DNS发现,即使它使用的是桥接驱动程序,它只需要与名为“桥接”的网络分开。容器也可以通过TCP端口进行连接,即使不公开或发布停靠端口,只要它们位于同一个码头网络上。

下面是一个用netcat测试网络连接的低级示例:

代码语言:javascript
运行
复制
$ docker network create test-net

$ docker run --net test-net --name nc-server -d nicolaka/netshoot nc -vl 8080
17df24cf91d1cb785cfd0ecbe0282a67adbfe725af9a1169f0650a022899d816

$ docker run --net test-net --name nc-client -it --rm nicolaka/netshoot nc -vz nc-server 8080
Connection to nc-server 8080 port [tcp/http-alt] succeeded!

$ docker logs nc-server
Listening on [0.0.0.0] (family 0, port 8080)
Connection from nc-client.test-net 37144 received!

$ docker rm nc-server
nc-server

$ docker network rm test-net
票数 46
EN

Stack Overflow用户

发布于 2021-12-30 01:29:56

老问题..。但是,您可能试图确保一组容器正在运行正确的网络。有两种简单的方法。你的直觉可能需要这样的东西:

代码语言:javascript
运行
复制
docker ps --format '{{ .ID }} {{ .Names }} {{ json .Networks }}'

但你可能真的想:

代码语言:javascript
运行
复制
docker network inspect networkname

其中包括网络上所有容器的列表。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43904562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档