SorryToPerson logo
返回
Docker2026-04-15·8 分钟

Docker 网络、数据卷与Compose实践

讲解 Docker 网络、数据卷和 Docker Compose 的常见使用场景与配置方法。

Docker 网络、数据卷与 Compose 实践

1. Docker 网络基础

bash
docker network ls
docker network create app-net
docker network inspect app-net
  • 默认网络:bridgehostnone
  • 自定义网络实现容器间名称解析。
bash
docker run -d --name redis --network app-net redis:7
docker run -d --name api --network app-net my-api:latest

2. 网络模式说明

  • bridge:默认隔离网络,容器通过端口映射访问。
  • host:共享宿主机网络,适合低延迟场景。
  • none:无网络,通常用于安全隔离。

3. 数据卷类型

  • 命名卷:-v mydata:/data
  • 绑定挂载:-v ./config:/app/config
bash
docker volume create app-data
docker run -d --name app -v app-data:/data my-app:latest
  • 命名卷适合持久化数据且可以跨容器使用。
  • 绑定挂载适合本地开发和调试配置文件。

4. 数据卷最佳实践

  • 不要把 .gitnode_modules 等临时文件挂载到卷中。
  • 使用 .dockerignore 过滤构建上下文。

5. Docker Compose 简介

docker compose 适合编排多服务开发环境。

yaml
version: '3.9'
services:
  web:
    image: nginx:latest
    ports:
      - '8080:80'
    volumes:
      - ./site:/usr/share/nginx/html:ro
    networks:
      - app-net

  api:
    image: my-api:latest
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

6. Compose 常见命令

bash
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down
  • up -d 后台启动。
  • down 会停止并删除网络,默认不删除命名卷。

7. Compose 与数据卷

yaml
volumes:
  db-data:

services:
  db:
    image: postgres:16
    volumes:
      - db-data:/var/lib/postgresql/data
  • 通过 docker compose down --volumes 删除所有 compose 创建的卷。

8. 常见场景

  • 使用自定义网络隔离开发环境。
  • 用命名卷持久化数据库、缓存、上传目录。
  • 通过 Compose depends_on 保证容器启动顺序(仅等待启动,不等待服务健康)。

9. 排查技巧

  • docker network inspect <name> 查看网络拓扑。
  • docker volume inspect <name> 查看挂载位置。
  • docker compose logs -f 观察服务启动日志。
Docker网络数据卷Compose