Docker:如何找到我的容器所在的网络?

时间:2017-05-11 00:19:23

标签: networking docker

我是docker的新手,我想了解一些事情:

  1. 如何查找我的容器所在的网络? (如何)
  2. 我可以动态分离我的容器并附加到其他网络吗? (如何)
  3. 如果我必须运行容器,如何检查两者是否在 同一个网络?我可以从其他人那里ping一个吗?
  4. 请解释一下 谢谢。

3 个答案:

答案 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)

  1. 网络在docker container inspect $id输出中可见,其中$id是容器ID或容器名称。该名称列在NetworkSettings下 - >网络部分。

  2. 您可以使用docker network connect $network_name $container_name将网络添加到容器中。同样,docker network disconnect $network_name $container_name会将容器与docker网络断开连接。

  3. 如果容器位于同一个docker网络上并且您尚未禁用ICC,则容器可以通过IP地址相互ping通。如果您不在名为“bridge”的默认网络上,则可以使用包含的DNS发现来ping并通过容器名称或网络别名连接到容器。使用docker network create $network_name创建的任何新网络都启用了DNS发现,即使它正在使用网桥驱动程序,它也只需要与名为“网桥”的网络分开。容器也可以通过TCP端口连接,即使它们在docker中没有公开或发布端口,只要它们位于同一个docker网络上。

  4. 以下是使用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