Docker Compose创建网络Network

706 阅读3分钟

1. Docker网络模式

1.1 Docker网络模式分类

Docker网络模式共分四类,如下表所示:

选项描述
Host基础镜像(容器不会虚拟出自己的网卡,配置主机的IP等,而是使用宿主机的IP和端口;
Container创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围;
None该模式关闭了网络功能
Bridge默认为该模式,此模式会为每一个容器分配,设置IP等,并将容器连接到一个docker0的虚拟网桥,通过docker0网桥以及iptables nat表配置与宿主机通信。

1.2 Docker默认网络

Docker默认提供了3种网络模式,当你安装Docker时,它会自动创建三个网络Bridge(创建容器,默认连接到此网络)、none、host。你可以使用一下docker network ls 或者docker network list命令列出这些网络:

[root@iZm5efxbw2mdc8khqpwhgwZ dolphinscheduler]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
3f1a418f933f   bridge    bridge    local
bfa2e67ceef4   host      host      local
e523a0a94942   none      null      local

2. Docker网络模式详解

2.1 默认桥接模式(bridge):

这是Docker的默认网络模式。在桥接模式下,Docker会为每个容器分配一个IP地址,并创建一个本地的网络桥接接口,连接所有在该主机上运行的容器。通过桥接接口,容器可以相互通信,也可以与主机上的其他服务通信。桥接模式适用于单主机多容器的情况。

2.2 主机模式(host):

在主机模式下,容器与主机共享网络命名空间。容器将直接使用主机的网络接口,而不是创建独立的网络栈。这意味着容器可以使用主机上的所有网络功能和服务,包括使用主机的IP地址和端口。主机模式适用于需要容器与主机之间网络性能最大化的场景。

2.3 容器模式(container):

在容器模式下,多个容器共享同一个网络命名空间。这意味着这些容器可以使用相同的IP地址和端口,它们可以直接通过本地主机名相互通信,就像它们在同一个主机上一样。容器模式适用于需要多个容器之间进行高性能通信的场景。

2.4 无网络模式(none):

在无网络模式下,容器没有分配任何网络资源。这意味着容器内部没有网络接口,也没有IP地址。无网络模式适用于不需要网络连接的容器,例如用于批处理作业或与外部网络完全隔离的容器。

2.5 自定义网络模式(user-defined):

自定义网络模式允许用户创建和管理自己的网络。用户可以创建多个自定义网络,并将容器连接到这些网络中。自定义网络模式提供了更灵活的网络配置选项,例如指定子网、定义网络驱动程序和连接多个容器到同一个网络等。

3. Docker网络bridge模式创建网络

下面列举一个docker-compose创建docker容器网络的例子

version: "3.8"

services:
  ruoyi-monitor-admin:
    image: bitnami/java:17.0.8-7
    command: "nohup java -jar /app/ruoyi-monitor-admin.jar &"
    volumes:
      - ./package:/app
    ports:
      - 10010:9101
    restart: always
    networks:
      app-network:
        ipv4_address: 172.21.0.2
  ruoyi-xxl-job-admin:
    image: bitnami/java:17.0.8-7
    command: "nohup java -jar /app/ruoyi-xxl-job-admin.jar &"
    volumes:
      - ./package:/app
    ports:
      - 10011:9100
    restart: always
    networks:
      app-network:
        ipv4_address: 172.21.0.3
    depends_on:
      - ruoyi-monitor-admin
networks:
  app-network:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/24
          gateway: 172.21.0.1

上面的脚本创建了一个app-network的docker网络,其中网段为172.21.0.0/24,网关为172.21.0.1。并且创建了两个docker容器并连接到创建的app-network网络并指定了ip分别为172.21.0.2,172.21.0.3。