Docker Network
Docker内两个不同的容器如何通信?
Docker是一个强大的工具,帮助你使用Docker引擎运行容器。
今天,我们将重点讨论网络部分,并尝试通过基本的例子来了解它是如何工作的。具体来说,我们将尝试回答这个问题。
Docker里面2个容器如何通信?
首先可以先查看docker默认的网络模式
    docekr network ls

- 当你的应用程序运行在独立的容器中,需要进行通信时,通常会使用桥接网络(bridge)
- 主机网络(host)。取消容器和Docker主机之间的网络隔离,直接使用主机的网络。
1.让我们创建一个新的nginx容器
    docker run  --name my_nginx -d -p 80:80 nginx:latest
    docker inspect network bridge  ## 查看网络情况

现在在docker内部就有如下的情况

2. 创建一个新的network
    docker network create -d bridge my_network 
    docker inspect network bridge my_network

3. 创建一个新的nginx2容器并指定与my_network进行通信
    docker run -d  --name nginx2 --network my_network -p 81:80 nginx:latest
    docker network inspect my_network  
    
    ping: unknown host  

现在当我们试图用ping 来检查两个容器部署的nginx是否能通信时,答案是否定的

让我们将网络进行连接
    docker network connect my_network my_nginx
    

一个有意思的事情
有趣的是,连接到默认网桥上的两个容器不能用它们的容器名称来互相呼应,但使用ip地址却可以,这是因为默认桥接没有嵌入 DNS 服务,无法将IP地址与容器名称绑定。
总结
主要回顾了一下docker容器通信的过程。
- 当在默认网桥建立容器的基础上,容器可以自主进行通信。
- 当新建一个网桥时,容器不能进行通信,需要进行连接才可以。
- 默认网桥不具备dns解析,所以不能直接采取容器名称进行通信

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号