docker run -it --rm
筆記250624
docker run -it --rm
是一個強大且常用的 Docker 命令組合,特別適合交互式開發和調試場景。以下是詳細解析和使用指南:
參數解析
參數 | 作用 | 典型場景 |
---|---|---|
-i | 保持 STDIN 打開(交互模式) | 需要輸入命令的交互操作 |
-t | 分配偽終端(TTY) | 需要終端交互(如 Bash) |
--rm | 容器退出后自動刪除文件系統 | 臨時任務,避免殘留容器 |
核心價值
- 即時清理
容器退出后自動刪除,避免產生大量停止狀態的容器(docker ps -a
顯示的無用容器) - 安全實驗
可在容器內自由測試危險操作(如rm -rf /*
),不影響宿主機 - 環境一致性
每次啟動都是全新的干凈環境(適合 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
注意事項
-
數據持久化
--rm
不會刪除卷(Volumes)或綁定掛載(Bind Mounts)的數據:# 安全修改文件(修改會保留在宿主機) docker run -it --rm -v $(pwd):/data ubuntu nano /data/file.txt
-
禁止場景
- 需要長期運行的服務(如 Web 服務器)
- 需要保留運行歷史或日志的場景
-
資源限制
可配合資源限制使用: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 使用效率,特別適合開發、測試和排查問題場景!