在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容器进行通信。 假设你有你的主机, 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
通常我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