在 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),无外部网络,适用于高安全性隔离任务。
-
自定义网络实战:
- 创建网络:
docker network create my_net。 - 连接容器:
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 交互、镜像与网络的一键管理。