一、下载镜像(如:mysql,Redis,Flink )
bash
-- 如果不指定版本默认拉取最新
docker pull flink:1.19.1-scala_2.12

拉取完 会在Docker Desptop显示拉取的镜像

二、配置脚本(以Flink为例)
创建一个Flink

建立一个docker-compose.yml 文件
bash
version: "3.8"
services:
jobmanager:
image: flink:1.19.1-scala_2.12
container_name: jobmanager
hostname: jobmanager
ports:
- "8081:8081"
- "6123:6123"
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
parallelism.default: 1
volumes:
- ./data/jobmanager:/opt/flink/data
- ./logs/jobmanager:/opt/flink/log
taskmanager:
image: flink:1.19.1-scala_2.12
container_name: taskmanager
hostname: taskmanager
depends_on:
- jobmanager
command: taskmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
ports:
- "6121:6121"
- "6122:6122"
volumes:
- ./data/taskmanager:/opt/flink/data
- ./logs/taskmanager:/opt/flink/log
可以吧所有需要的镜像都配置成yml管理方法,方便管理。
三、运行容器
进入终端cmd,Docker Desptop 都可以执行 。

第一步:进入flink目录,yml文件存放flink目录当中
bash
cd D:\Docker\flink
第二步:运行docker-compose up -d启动服务
bash
docker-compose up -d
第三步:验证
bash
docker-compose ps
bash
docker-compose ps
第四步:访问页面 http://localhost:8081

第五步:停止服务,运行(注意执行以下命令,Docker Desptop镜像也会被删除如下图)
bash
docker-compose down

想停止服务 直接点击按钮就好了下图所示:

四、删除数据卷,可以加上-v参数
bash
docker-compose down -v
docker-compose down -v 具体删除什么
会删除的:
-
容器(Containers) - 停止并删除
docker-compose.yml中定义的所有容器 -
网络(Networks) - 删除 Docker Compose 创建的自定义网络
-
卷(Volumes) - 删除 Docker Compose 中定义的命名卷(因为加了
-v参数)
不会删除的:
-
docker-compose.yml文件 - 配置文件会保留 -
镜像(Images) - 不会删除下载的镜像
-
绑定挂载(Bind Mounts) - 不会删除本地目录中的文件
-
未在 compose 中定义的资源 - 不会影响其他容器、网络等
详细解释:
1. 删除容器
# 会删除这些容器(如果由该 compose 文件创建) flink-jobmanager flink-taskmanager
2. 删除卷
如果 docker-compose.yml 中有这样的定义:
volumes: flink-data:
那么 docker-compose down -v 会删除名为 flink-data 的卷。
3. 删除网络
会删除 Docker Compose 创建的项目网络,比如:
yourprojectname_default
验证示例:
当前状态:
bash
# 查看容器
docker ps
# 应该看到 flink-jobmanager 和 flink-taskmanager
# 查看卷
docker volume ls
# 可能看到一些 flink 相关的卷
# 查看网络
docker network ls
# 可能看到 flink_default 网络
执行命令:
bash
cd D:\Docker\yml
docker-compose down -v
命令执行后:
bash
# 再次查看
docker ps
# 容器已删除
docker volume ls
# 相关的卷已删除
docker network ls
# 相关的网络已删除
# 但是你的文件还在!
dir
# docker-compose.yml 文件还在!
如果你担心数据丢失:
情况1:使用绑定挂载(推荐)
bash
# docker-compose.yml
volumes:
- ./data:/opt/flink/data # 这是绑定挂载
✅ 安全 :docker-compose down -v 不会删除 ./data 目录中的文件
情况2:使用命名卷
# docker-compose.yml volumes: - flink-data:/opt/flink/data # 这是命名卷
⚠️ 警告 :docker-compose down -v 会删除 flink-data 卷中的所有数据
不同的 down 命令对比:
| 命令 | 删除容器 | 删除网络 | 删除卷 | 删除镜像 |
|---|---|---|---|---|
docker-compose down |
✅ | ✅ | ❌ | ❌ |
docker-compose down -v |
✅ | ✅ | ✅ | ❌ |
docker-compose down --rmi all |
✅ | ✅ | ❌ | ✅ |
docker-compose down --rmi all -v |
✅ | ✅ | ✅ | ✅ |
安全建议:
如果你只是想重启:
bash
# 只删除容器和网络,保留数据卷
docker-compose down
docker-compose up -d
如果你要彻底清理:
bash
# 删除所有东西,包括数据
docker-compose down -v
如果你想保留数据但完全重置:
bash
# 先备份数据
cp -r data data_backup
# 然后清理
docker-compose down -v
# 还原数据
cp -r data_backup/* data/
检查 yml 文件是否还在:
bash
# 在 Windows PowerShell 中
cd D:\Docker\yml
# 执行清理
docker-compose down -v
# 查看文件是否还在
dir *.yml
# 或者查看详细文件信息
Get-ChildItem -File