当前位置: 首页 > news >正文

`docker run -it --rm` 笔记250624

docker run -it --rm 笔记250624

docker run -it --rm 是一个强大且常用的 Docker 命令组合,特别适合交互式开发和调试场景。以下是详细解析和使用指南:


参数解析

参数作用典型场景
-i保持 STDIN 打开(交互模式)需要输入命令的交互操作
-t分配伪终端(TTY)需要终端交互(如 Bash)
--rm容器退出后自动删除文件系统临时任务,避免残留容器

核心价值

  1. 即时清理
    容器退出后自动删除,避免产生大量停止状态的容器(docker ps -a 显示的无用容器)
  2. 安全实验
    可在容器内自由测试危险操作(如 rm -rf /*),不影响宿主机
  3. 环境一致性
    每次启动都是全新的干净环境(适合 CI/CD 测试)

典型使用场景

1. 临时调试工具链
# 使用最新 Ubuntu 调试网络问题(退出即删)
docker run -it --rm ubuntu bash -c "apt update && apt install -y curl && curl example.com"
2. 语言环境快速测试
# 测试 Python 代码(不污染本地环境)
docker run -it --rm python:3.9 python
>>> print("Hello, Docker!")
3. 文件操作沙箱
# 安全解压未知压缩包
docker run -it --rm -v $(pwd):/data alpine sh
/data # unzip suspicious.zip
4. 数据库临时查询
# 单次 SQL 查询(避免残留容器)
docker run -it --rm mysql:8.0 mysql -hdb_host -uroot -p"$PWD" -e "SHOW DATABASES"

进阶使用技巧

1. 组合挂载目录
# 挂载当前目录并安装依赖(退出后容器消失,依赖不残留)
docker run -it --rm -v $(pwd):/app -w /app node:14 npm install
2. 多命令执行
# 在 Alpine 中执行多个命令
docker run -it --rm alpine sh -c "date && echo '测试完成'"
3. 快速清理所有临时容器
# 删除所有已停止的容器(常与 --rm 配合使用)
docker container prune -f

注意事项

  1. 数据持久化
    --rm 不会删除卷(Volumes)或绑定挂载(Bind Mounts)的数据:

    # 安全修改文件(修改会保留在宿主机)
    docker run -it --rm -v $(pwd):/data ubuntu nano /data/file.txt
    
  2. 禁止场景

    • 需要长期运行的服务(如 Web 服务器)
    • 需要保留运行历史或日志的场景
  3. 资源限制
    可配合资源限制使用:

    docker run -it --rm --memory=500m --cpus=0.5 python
    

与常规启动的对比

特性docker run -it --rm普通 docker run -d
容器生命周期退出即销毁需手动停止/删除
磁盘空间自动清理累积停止容器占用空间
环境状态每次启动都是全新环境保留之前状态
适用场景调试/测试/临时任务长期运行服务

经典工作流示例

# 1. 调试构建失败问题
docker run -it --rm -v $(pwd):/src buildpack-deps make test# 2. 检查容器内进程
docker run -it --rm busybox top# 3. 临时 HTTP 测试服务
docker run -it --rm -p 8080:80 nginx

掌握 -it --rm 组合能极大提升 Docker 使用效率,特别适合开发、测试和排查问题场景!

相关文章:

  • 怎么自己做个免费网站吗网络营销理论基础
  • 网站建设结单 优帮云关键字挖掘爱站网
  • 做go分析和kegg分析网站百度竞价入口
  • 三级分销网站建设营销推广seo
  • 小企业网站建设建议seo排名优化软件有
  • 无锡梅村网站建设seo诊断分析报告
  • 论文笔记(八十六)V-HOP: Visuo-Haptic 6D Object Pose Tracking
  • vue 3 计算器
  • MySql:DDL,增删改查:创建表
  • 【大模型学习】项目练习:套壳DeepSeek
  • 火山 RTC 引擎14 设置CB
  • (LeetCode 面试经典 150 题 )121. 买卖股票的最佳时机 (遍历)
  • 自然语言处理入门
  • 【开源项目】比 PyInstaller 更方便:图形界面打包 Python 脚本的体验
  • 工程优化——WebSocket、WSS(WebSocket Secure)和SSE(Server-Sent Events)通信对比
  • PyEcharts教程(009):PyEcharts绘制水球图
  • 常见网络知识,宽带、路由器
  • 【教学类-89-08】20250624新年篇05——元宵节灯笼2CM黏贴边(倒置和正立数字 )
  • 内存泄漏和内存溢出的区别
  • 五种 IO 模式的简单介绍 -- 阻塞 IO,非阻塞 IO,信号驱动 IO,IO 多路复用,异步 IO
  • 使用 PyFluent 自动化 CFD
  • FPGA基础 -- Verilog 验证平台之 **cocotb 验证 `阶乘计算模块(factorial)` 的例子**
  • CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
  • 用vscode破解最新typora1.10.8
  • 前端vue2每三十秒被动接受后端服务器发送过来得数据
  • 服务器数据恢复——异常断电导致服务器故障的数据恢复案例