在Docker用户定义的networking中运行命令

使用docker创build下一个networking后:

sudo docker network create --driver bridge mynet_nw 

我怎么能从这个networking发出命令? 即它就像模拟我的机器是在mynet_nw里面,所以我可以发出ping命令到mynet_nw中创build的不同的docker图像?

谢谢

您从networking中的任何Docker容器发出命令。 你只需要先添加一个容器。 请参阅docker network connect

无论哪种方式,networking上的任何Docker容器都可以与同一networking上的任何其他Docker容器进行通信。 假设你有你的主机, containerAcontainerB ,你可以ping任何三个彼此:

 containerA:~$ ping 172.18.0.1 # from containerA to host 56 bytes from 172.18.0.1: icmp_seq=0 ttl=64 time=0.101 ms 56 bytes from 172.18.0.1: icmp_seq=0 ttl=64 time=0.098 ms 56 bytes from 172.18.0.1: icmp_seq=0 ttl=64 time=0.102 ms 56 bytes from 172.18.0.1: icmp_seq=0 ttl=64 time=0.100 ms containerA:~$ ping 172.18.0.3 # from containerA to containerB 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.082 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.079 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.116 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.094 ms 

假设你知道主机名,你应该甚至可以直接ping主机名。 当尝试ping主机时,这可能有些奇怪,但它应该在容器之间工作。

 containerA:~$ ping containerB # from containerA to containerB 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.067 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.084 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.080 ms 56 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.0811 ms 

通常我build议阅读Dockernetworking命令的文档: https : //docs.docker.com/engine/reference/commandline/network_connect/#related-commands https://docs.docker.com/engine/userguide/networking /工作与-networking/

无论如何,dockernetworking生成一个networking,你需要一个容器来执行那里的命令。

例:

 docker run -it alpine --network mynet_nw /bin/bash ping mydb 

如果您知道容器的名称,您可以一直检查主机本身的networking:

 INSTANCE_NAME='myalpine' IPADD=$( docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_NAME ) ping $IPADD