the*_*ode 25 networking docker
我是码头工的新手,我想了解一些事情:
请解释谢谢.
joh*_*s85 42
要查看容器所在的网络,请假设您的容器被调用c1:
$ docker inspect c1 -f "{{json .NetworkSettings.Networks }}"
Run Code Online (Sandbox Code Playgroud)
要断开容器与第一个网络的连接(假设您的第一个网络被调用test-net):
$ docker network disconnect test-net c1
Run Code Online (Sandbox Code Playgroud)
然后将其重新连接到另一个网络(假设它被称为test-net-2):
$ docker network connect test-net-2 c1
Run Code Online (Sandbox Code Playgroud)
要检查两个容器(或更多)是否一起在网络上:
$ docker network inspect test-net -f "{{json .Containers }}"
Run Code Online (Sandbox Code Playgroud)
小智 17
老问题..但您可能正在尝试确保容器集群运行正确的网络。有两种简单的方法。你的直觉可能需要这样的东西:
docker ps --format '{{ .ID }} {{ .Names }} {{ json .Networks }}'
Run Code Online (Sandbox Code Playgroud)
但你可能真的想要:
docker network inspect networkname
Run Code Online (Sandbox Code Playgroud)
其中包括该网络上所有容器的列表。
该网络在docker container inspect $id输出中可见,其中$id是容器ID或容器名称。该名称在“网络设置->网络”部分下列出。
您可以docker network connect $network_name $container_name用来将网络添加到容器。同样,docker network disconnect $network_name $container_name将从Docker网络断开容器。
如果容器在同一个docker网络上,并且您尚未禁用ICC,则容器可以通过IP地址相互ping通。如果您不在名为“ bridge”的默认网络上,则可以使用包含的DNS发现来按容器名称或网络别名ping并连接到容器。您创建的任何新网络都docker network create $network_name将打开DNS发现,即使它正在使用网桥驱动程序,也只需将其与名为“网桥”的网络分开。容器也可以通过TCP端口连接,即使它们不在同一docker网络中,也无需在docker中公开或发布端口。
这是使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20124 次 |
| 最近记录: |