第三节:Docker 进阶实战:深度掌握数据卷、网络架构与集群编排

34 阅读3分钟

在 Docker 的实战体系中,进阶模块是解决生产环境下数据持久化容器互联自动化部署的核心工具。以下是根据实战指南整理的详细操作手册:


一、 数据持久化:Docker Volume

容器默认的文件系统是易失的,数据卷(Volume)通过将容器路径映射到宿主机,实现数据的永久保存。

  • 匿名挂载:仅指定容器内路径,Docker 自动生成随机 ID 卷名。

    • 命令:docker run -v /container_dir nginx
  • 具名挂载:赋予卷一个易记的名称,方便在多个容器间共享。

    • 命令:docker run -v my_vol:/www/test nginx
  • Bind Mount(绑定挂载) :直接映射宿主机特定目录,常用于配置文件挂载。

    • 命令:docker run -v /host/path:/container/path nginx
  • 卷管理指令

    • docker volume ls:列出所有卷。
    • docker volume inspect <name>:查看卷在宿主机的具体存放位置。
    • docker volume prune:清理所有未被使用的卷。

二、 容器通信:Docker Network

网络模块负责定义容器如何发现彼此以及如何与外界通讯。

  • Bridge(网桥) :默认模式。Docker 启动时会创建 docker0 虚拟网桥,每个容器通过虚拟网卡连接至此。

    • 特性:容器间通过 IP 通信,若需通过容器名通信,建议创建自定义网络。
  • Host(主机) :容器与宿主机共享网络栈,没有 IP 隔离,性能最高但端口冲突风险大。

  • None:容器仅有本地环回口(lo),无外部网络,适用于高安全性隔离任务。

  • 自定义网络实战

    1. 创建网络:docker network create my_net
    2. 连接容器:docker run --network my_net --name app1 nginx

三、 多容器编排:Docker Compose

Compose 通过 YAML 文件统筹多个容器,避免繁琐的手动命令。

  • 核心配置(docker-compose.yml)

    • services:定义应用包含的各个容器服务及其启动参数。
    • networks/volumes:定义该项目专用的网络和持久化存储。
  • 常用管理命令

    • docker-compose up -d:以后台模式启动配置文件中定义的所有服务。

    • docker-compose ps:查看当前项目下所有服务的运行状态。

    • docker-compose logs -f:查看服务聚合日志。

    • docker-compose stop/start:停止或启动已存在的服务。


四、 集群管理:Docker Swarm

Swarm 是 Docker 原生的集群编排方案,用于管理多台机器上的容器。

  • 集群初始化

    • 管理节点初始化:docker swarm init --advertise-addr <Manager_IP>
    • 工作节点加入:使用初始化生成的 token 执行 docker swarm join
  • 服务(Service)部署

    • 创建服务:docker service create --replicas 3 --name my_web -p 80:80 nginx
    • 查看服务列表:docker service ls
  • 动态扩缩容

    • 命令:docker service update --replicas 5 my_web(将副本数即刻调整为 5 个)。

五、 可视化管理:Portainer

对于不习惯命令行的开发者,Portainer 提供了强大的 Web UI 操作界面。

  • 单机部署命令:

    docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

  • 核心功能:支持 Dashboard 仪表盘监控、容器 Web Shell 交互、镜像与网络的一键管理。