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。