Docker网络连接大揭秘:让你的容器互联互通、如虎添翼!

摘要

  • Docker已经成为现代应用程序开发和部署的瑞士军刀,但是在容器网络连接方面还有很多人不甚了解。本博客将为你揭开Docker网络连接的神秘面纱,让你的容器在网络中互联互通,如虎添翼!从基本概念到高级操作,让我们探索Docker网络的世界,带你轻松玩转容器通信,助你成为容器网络的大师!

一 容器网络基础命令

  • 当涉及容器网络时,Docker提供多种网络选项,控制容器与主机以及其他容器之间的通信方式。
  1. Docker网络类型:

    • bridge 网络:Docker默认创建的网络,适用于单个主机上的容器通信。每个容器都被分配一个IP地址,并且可以使用容器名或IP地址进行通信。
    • host 网络:容器直接使用主机网络,共享主机的网络命名空间。容器与主机共享相同的IP地址和端口。
    • overlay 网络:用于跨多个主机连接容器。适用于Swarm模式,允许容器在不同主机之间进行通信,使得容器在多主机环境中可以像在单个主机上一样运行。
    • macvlan 网络:允许将容器绑定到物理网络接口的MAC地址,使得容器拥有和物理设备相同的MAC地址,适用于一些特殊网络配置需求。
  2. 查看网络列表:

    docker network ls
    
  3. 创建自定义网络:

    docker network create <network_name>
    
  4. 创建容器时指定网络:

    docker run -d --name <container_name> --network <network_name> <image_name>
    
  5. 连接容器到网络:

    docker network connect <network_name> <container_name>
    
  6. 从网络断开容器:

    docker network disconnect <network_name> <container_name>
    
  7. 查看容器的网络信息:

    docker inspect <container_name> --format='{
          
          {.NetworkSettings.Networks}}'
    
  8. 端口映射:

    • 使用 -p 参数将容器内部的端口映射到主机上的端口。例如,将容器内部的端口 8080 映射到主机的端口 80:
    docker run -d -p 80:8080 --name <container_name> <image_name>
    
  9. 连接到容器的Shell:

    docker exec -it <container_name> /bin/bash
    
  10. 删除网络:

    docker network rm <network_name>
    

二 实际案例

2.1 查看容器所在的网络

要检查两个容器是否在同一个网络中,您可以使用以下命令:

  1. 获取容器的网络名称或ID。运行以下命令:
    docker inspect <容器ID或名称> --format='{
          
          {.NetworkSettings.Networks}}'
    
  2. 比较两个容器的网络信息,如果它们具有相同的网络名称或ID,则表示它们在同一个网络中。
  • 演示结果:
    root@armbian:/usr/local/aurora-springboot# docker inspect services --format='{
          
          {.NetworkSettings.Networks}}'
    map[docker_default:0x4000530180]
    root@armbian:/usr/local/aurora-springboot# docker inspect aurora-springboot-0.0.1.jar --format='{
          
          {.NetworkSettings.Networks}}'
    map[bridge:0x40005dc9c0]
    
    • 第一个容器 services 在网络 docker_default 中,而第二个容器 aurora-springboot-0.0.1.jar 在网络 bridge 中,两者并不在一个网络中。

2.2 容器加入网络

  • 如果想让这两个容器在同一个网络中进行通信,可以考虑将它们连接到同一个网络。您可以使用 docker network connect 命令将容器连接到指定的网络。例如,可以运行以下命令将第二个容器连接到 docker_default 网络:
docker network connect docker_default aurora-springboot-0.0.1.jar

2.3 网络配置的持久性

  • 如果重新启动存放项目的容器,网络连接还有效吗?
  • 当重新启动容器时,网络连接将保持有效。**与容器关联的网络配置是持久的,因此重新启动容器后,它将重新连接到先前连接的网络。只有在删除容器时,它才会断开与网络的连接。**因此,如果重新启动存放项目的容器,网络连接将保持不变,容器将保持在相同的网络中,并且可以与其他容器进行通信。

2.4 容器加入和移除网络

root@armbian:/usr/local/aurora-springboot# docker inspect aurora-springboot-0.0.1.jar --format='{
    
    {.NetworkSettings.Networks}}'
map[bridge:0x40002fe000 docker_default:0x40002fe180]

现在aurora-springboot-0.0.1.jar容器位于两个网络中,将其从bridge:0x40002fe000移除,只保证在docker_default:0x40002fe180网路中。

  1. 停止容器:
    docker stop aurora-springboot-0.0.1.jar
    
  2. 移除容器的网络连接:
    docker network disconnect bridge aurora-springboot-0.0.1.jar
    
  3. 将容器连接到目标网络:
    docker network connect docker_default aurora-springboot-0.0.1.jar
    
  4. 启动容器:
    docker start aurora-springboot-0.0.1.jar
    

现在,aurora-springboot-0.0.1.jar 容器将只保留在 docker_default 网络中,而不再与 bridge 网络关联。

猜你喜欢

转载自blog.csdn.net/yang2330648064/article/details/131487614
今日推荐