我是docker的新手,我想了解一些事情:
请解释一下 谢谢。
答案 0 :(得分:21)
要查看容器所在的网络,假设您的容器已调用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 }}"
答案 1 :(得分:4)
网络在docker container inspect $id
输出中可见,其中$id
是容器ID或容器名称。该名称列在NetworkSettings下 - >网络部分。
您可以使用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
答案 2 :(得分:0)
Range("A1").Resize(UBound(Data, 1), UBound(Data, 2)).Value = Data
' note that the range and the data need to be exact the same size!
$ docker exec -it {container_name_1} ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:13:00:03
inet addr:172.19.0.3 Bcast:172.19.255.255 Mask:255.255.0.0
就我而言,这意味着 $ docker exec -it {container_name_2} ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:12:00:02
inet addr:172.18.0.2 Bcast:172.18.255.255 Mask:255.255.0.0
和 {container_name_1}
不在同一网络上。 ({container_name_2}
和 172.18
不一样)。要使它们在同一网络上运行,on way 是使用 172.19
。关注这个l