一、基础知识
- Docker安装后会自动建立三个网络:
host、bridge、none - host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
- container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
- none:该模式关闭了容器的网络功能。
- bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
二、基本命令
- 创建网络:
docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.0 [someName] - 列出所有网络:
docker network ls - 删除:
docker network rm [someName] - 查看:
docker network inspect [someName] - 清除不用的网络:
docker network prune
三、docker compose
3.1 未显示声明
在下面的示例中,运行 docker-compose up,会生成默认的网络,步骤如下:
- 创建名为
myapp_default的网络; - 创建
web容器并加入myapp_default网络,网络名称为web; - 创建
db容器并加入myapp_default网络,网络名称为db
version: "3.9"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
3.2 配置默认网络
networks:
default:
driver: custom-driver-1
3.3 创建自定义网络
networks:
frontend:
# Use a custom driver
driver: custom-driver-1
backend:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"
3.4 使用已存在的网络
networks:
default:
external:
name: my-pre-existing-network