Docker 容器使用运行镜像(Windows)

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 具体删除什么

会删除的:
  1. 容器(Containers) - 停止并删除 docker-compose.yml 中定义的所有容器

  2. 网络(Networks) - 删除 Docker Compose 创建的自定义网络

  3. 卷(Volumes) - 删除 Docker Compose 中定义的命名卷(因为加了 -v 参数)

不会删除的:
  1. docker-compose.yml 文件 - 配置文件会保留

  2. 镜像(Images) - 不会删除下载的镜像

  3. 绑定挂载(Bind Mounts) - 不会删除本地目录中的文件

  4. 未在 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
相关推荐
eWidget2 小时前
Shell循环进阶:break/continue,循环嵌套与优化技巧
运维·开发语言·ffmpeg·运维开发
LetsonH2 小时前
调节 Ubuntu 的 Swap 大小
linux·运维·ubuntu
txinyu的博客2 小时前
用户态与内核态
linux·运维·服务器
爱喝水的鱼丶2 小时前
SAP-ABAP:从SAP中暴露REST API:完整实操SICF接口开发指南
运维·开发语言·api·sap·abap·rest·接口开发
IT运维爱好者2 小时前
【Docker】解决Docker容器时间与宿主机时间不一致的几种方法
docker·容器
鸠摩智首席音效师2 小时前
如何在 Docker 容器下运行 cronjob ?
运维·docker·容器
橙露3 小时前
Kubernetes 集群运维:故障排查、资源调度与高可用配置
运维·容器·kubernetes
skywalk81633 小时前
clonos control-pane: FreeBSD下的CBSD的web管理版(未完成,还有500error错误)
服务器·云原生·容器·freebsd·cbsd
天空属于哈夫克33 小时前
企微API+RPA(机器人流程自动化)高效实战指南
linux·运维·服务器·自动化·企业微信·rpa