Debian系统Docker网络配置指南
在Debian系统上配置Docker网络前,需先安装Docker。执行以下命令更新软件包索引并安装docker.io(Debian默认仓库中的Docker版本):
sudo apt update
sudo apt install docker.io
安装完成后,启动Docker服务并设置为开机自启,确保系统重启后Docker仍能正常运行:
sudo systemctl start docker
sudo systemctl enable docker
Docker安装后会自动创建默认网络(如bridge、host、none)。使用以下命令查看所有网络:
docker network ls
输出示例:
NETWORK ID     NAME      DRIVER    SCOPE
a7c7ceea1212   bridge    bridge    local
20be84b131a9   host      host      local
2d3a1436301f   none      null      local
默认的bridge网络功能有限,建议创建自定义网络以实现更好的容器管理和通信。以下命令创建一个名为my_bridge_network的桥接网络,并指定子网(192.168.1.0/24)和网关(192.168.1.1):
docker network create --driver bridge --subnet=192.168.1.0/24 --gateway=192.168.1.1 my_bridge_network
创建容器时,通过--network参数将其连接到自定义网络。例如,运行一个Nginx容器并连接到my_bridge_network:
docker run -d --name my_nginx --network my_bridge_network nginx
若需为容器指定静态IP,可在启动命令中添加--ip参数:
docker run -d --name my_nginx --network my_bridge_network --ip 192.168.1.10 nginx
Docker支持多种网络模式,可根据需求选择:
docker0,通过NAT与主机通信,适用于单主机环境。无需额外指定(--network bridge可省略)。docker run -d --name my_nginx --network host nginx
docker run -d --name my_nginx --network none nginx
docker run -d --name my_nginx --network container:existing_container nginx
若需修改Docker守护进程的网络配置(如监听端口、DNS服务器),可编辑/etc/docker/daemon.json文件。例如,添加DNS服务器:
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
修改后重启Docker服务使配置生效:
sudo systemctl restart docker
若需将容器端口映射到主机端口(如将Nginx的80端口映射到主机的8080端口),可使用-p参数:
docker run -d --name my_nginx --network my_bridge_network -p 8080:80 nginx
使用docker inspect命令查看容器的详细网络信息(如IP地址、网关、DNS):
docker inspect my_nginx
在输出中查找NetworkSettings部分,可获取容器的具体网络配置。
若不再需要某个自定义网络,可使用以下命令删除(删除前需确保网络中无容器运行):
docker network rm my_bridge_network
对于多容器应用(如Web+数据库),可使用Docker Compose简化网络配置。创建docker-compose.yml文件:
version: '3'
services:
  web:
    image: nginx
    networks:
      - my_custom_network
  db:
    image: mysql
    networks:
      - my_custom_network
networks:
  my_custom_network:
    driver: bridge
    subnet: 172.20.0.0/16
    gateway: 172.20.0.1
启动服务:
docker-compose up -d
通过以上步骤,可在Debian系统上完成Docker网络的配置与管理,满足不同场景下的网络需求。