使用docker创建下一个网络后:
sudo docker network create --driver bridge mynet_nw
如何从此网络内部发出命令?即就像模拟我的机器在mynet_nw里面所以我可以发出ping命令到mynet_nw里面创建的不同的docker图像?
THX
答案 0 :(得分:1)
通常我建议阅读docker network命令的文档:https://docs.docker.com/engine/reference/commandline/network_connect/#related-commands https://docs.docker.com/engine/userguide/networking/work-with-networks/
无论如何,docker网络会生成一个网络,你需要一个容器来执行命令。
示例:
docker run -it alpine --network mynet_nw /bin/bash
ping mydb
如果您知道容器的名称,您可以从主机本身检查网络:
INSTANCE_NAME='myalpine'
IPADD=$( docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_NAME )
ping $IPADD
答案 1 :(得分:1)
您可以从网络中的任何Docker容器发出命令。您只需要先添加容器。请参阅docker network connect
。
无论哪种方式,网络上的任何Docker容器都可以与同一网络上的任何其他Docker容器进行通信。假设您拥有主持人containerA
和containerB
,您就可以相互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