在配置Docker网络前,需先确保系统已安装Docker。若未安装,可通过以下命令完成安装:
sudo apt update
sudo apt install docker.io
安装完成后,启动Docker服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
Docker安装后会默认创建3个核心网络(bridge、host、none),可通过以下命令查看:
docker network ls
输出示例:
NETWORK ID NAME DRIVER SCOPE
c28d17d73c84 bridge bridge local
3fb51aa17d58 host host local
efd43a1d9d5c none null local
Docker支持4种核心网络模式,可根据需求选择:
工作原理:Docker会创建虚拟网桥docker0,容器连接到该网桥,通过NAT规则与外部通信。
配置方式:
--network参数,默认使用bridge):docker run -d --name my_nginx -p 8080:80 nginx
其中-p 8080:80将容器的80端口映射到主机的8080端口(外部访问需通过主机IP:8080)。docker0网桥通信,需端口映射才能从外部访问,适用于大多数常规应用。工作原理:容器直接使用主机的网络栈,不进行网络隔离。
配置方式:
docker run -d --name my_nginx --network host nginx
特点:容器端口与主机端口直接共享(如容器内80端口即主机80端口),性能最高,但缺乏隔离性,适用于对网络性能要求极高的场景(如高频交易系统)。
工作原理:容器仅保留lo(回环)接口,无外部网络访问能力。
配置方式:
docker run -it --name isolated_container --network none alpine
特点:提供最高级别的网络隔离,适用于纯计算任务(如数据处理),需通过卷挂载传递数据。
工作原理:新容器与已有容器共享网络命名空间(共用IP、端口)。
配置方式:
docker run -d --name debug_container --network container:my_nginx busybox
特点:容器间实现“零距离”通信,适用于日志收集、监控代理等Sidecar模式(如debug_container可访问my_nginx的日志)。
默认的bridge网络无法满足复杂场景(如容器间自定义域名通信),需创建自定义网络:
docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 my_bridge
--subnet:指定子网范围(如192.168.1.0/24);--gateway:指定网关地址(如192.168.1.1);my_bridge:自定义网络名称。docker run -d --name my_nginx --network my_bridge --ip 192.168.1.10 nginx
--ip:为容器指定静态IP(可选,若未指定则自动分配)。docker network connect my_bridge existing_container
docker inspect my_bridge
docker network rm my_bridge
若需修改Docker守护进程的网络参数(如DNS、监听端口),可编辑/etc/docker/daemon.json文件:
sudo nano /etc/docker/daemon.json
添加以下内容(示例:配置DNS、开启TCP监听):
{
"dns": ["8.8.8.8", "8.8.4.4"],
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
保存后重启Docker服务使配置生效:
sudo systemctl restart docker
对于多容器应用(如Web+数据库),可使用docker-compose.yml文件简化网络配置:
version: '3'
services:
web:
image: nginx
networks:
- my_bridge
ports:
- "8080:80"
db:
image: mysql
networks:
- my_bridge
environment:
MYSQL_ROOT_PASSWORD: 123456
networks:
my_bridge:
driver: bridge
subnet: 192.168.2.0/24
gateway: 192.168.2.1
启动服务:
docker-compose up -d
该配置会自动创建my_bridge网络,并将web和db容器连接到该网络,实现容器间通过服务名(如web、db)通信。
通过以上步骤,可在Debian系统上完成Docker网络的配置与管理,满足不同场景的需求。