我试着去了解关于码头的一些事情:
发布于 2017-05-11 00:43:42
假设您的容器名为c1
,要查看容器所在的网络是什么
$ docker inspect c1 -f "{{json .NetworkSettings.Networks }}"
若要将容器与第一个网络断开(假设您的第一个网络称为test-net
):
$ docker network disconnect test-net c1
然后将其重新连接到另一个网络(假设它称为test-net-2):
$ docker network connect test-net-2 c1
若要检查网络中是否有两个容器(或更多)在一起,请执行以下操作:
$ docker network inspect test-net -f "{{json .Containers }}"
发布于 2017-05-11 00:43:02
docker container inspect $id
输出中是可见的,其中$id
是容器id或容器名称。该名称列在NetworkSettings ->网络部分下。可以用格式字符串输出:
码头容器检查\-格式{{range $net,$v := .NetworkSettings.Networks}{printf "%s\n“$net}{end}‘\ $container_namedocker network connect $network_name $container_name
将网络添加到容器中。类似地,docker network disconnect $network_name $container_name
将断开容器与码头网络的连接。docker network create $network_name
创建的任何新网络都打开了DNS发现,即使它使用的是桥接驱动程序,它只需要与名为“桥接”的网络分开。容器也可以通过TCP端口进行连接,即使不公开或发布停靠端口,只要它们位于同一个码头网络上。下面是一个用netcat测试网络连接的低级示例:
$ 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
发布于 2021-12-30 01:29:56
老问题..。但是,您可能试图确保一组容器正在运行正确的网络。有两种简单的方法。你的直觉可能需要这样的东西:
docker ps --format '{{ .ID }} {{ .Names }} {{ json .Networks }}'
但你可能真的想:
docker network inspect networkname
其中包括网络上所有容器的列表。
https://stackoverflow.com/questions/43904562
复制相似问题