【运维】还原 Docker 启动命令的利器:runlike 与 docker-autocompose
🔍 还原 Docker 启动命令的利器:runlike 与 docker-autocompose 实用教程
在日常使用 Docker 时,我们常常通过 docker run
启动容器,但有时候过了一段时间就忘记了当初使用的具体参数(端口、挂载、环境变量等)。此时,如果你想“复刻”一个容器的配置,就必须还原出原始的启动命令或 Compose 配置文件。
本文将介绍两个非常实用的开源工具:
runlike
:还原docker run
命令docker-autocompose
:生成docker-compose.yml
📦 一、为什么需要还原 Docker 启动命令?
场景举例:
- 运维需要复现生产环境的容器
- 团队成员忘记了启动命令细节
- 想将
docker run
迁移为docker-compose
配置 - 快速备份当前容器部署状态
虽然可以通过 docker inspect
查看容器配置,但信息太繁杂,不如这两个工具来的高效和直观。
🧰 二、安装 runlike:快速还原 docker run 命令
✅ 安装
使用 pip 安装(建议使用 Python 3):
pip install runlike
或者从源码安装:
git clone https://github.com/lavie/runlike.git
cd runlike
pip install .
✅ 使用示例
docker ps # 查看容器 ID 或名称
runlike <container_id_or_name>
🧪 示例输出:
docker run \--name=my-nginx \-p 8080:80 \-v /mydata:/usr/share/nginx/html \-e "ENV=production" \nginx:latest
runlike 会尽可能忠实地还原原始参数,包括:
- 挂载卷(-v)
- 环境变量(-e)
- 网络参数(–network)
- 启动命令(CMD)
- 重启策略(–restart)
- 容器名称、镜像名称等
🛠 三、安装 docker-autocompose:还原 docker-compose.yml
有些服务启动参数非常复杂,适合用 docker-compose.yml
来管理。这时候你可以使用 docker-autocompose
。
✅ 安装
pip install docker-autocompose
或者源码安装:
git clone https://github.com/Red5d/docker-autocompose.git
cd docker-autocompose
pip install .
✅ 使用示例
docker-autocompose <container_id_or_name> > docker-compose.yml
📄 示例输出:
version: '3.3'
services:my-nginx:image: nginx:latestports:- "8080:80"volumes:- /mydata:/usr/share/nginx/htmlenvironment:- ENV=productionrestart: always
输出的 docker-compose.yml
文件可以直接用来部署:
docker compose up -d
🧠 四、runlike 与 docker-autocompose 的对比
功能/工具 | runlike | docker-autocompose |
---|---|---|
输出格式 | docker run 命令 | docker-compose.yml 文件 |
使用复杂度 | 简单 | 稍高(需要理解 Compose 语法) |
是否支持多容器 | ❌(单容器) | ✅(可以用多个容器分别生成合并) |
是否可直接部署 | ✅ | ✅ |
🎯 五、最佳实践建议
- 本地调试时用
docker run
+runlike
- 多服务部署时用
docker-compose
+docker-autocompose
- 容器运行后,立即用这两个工具备份配置,避免遗忘
🧩 六、补充小技巧
查看所有容器及其完整命令:
docker ps -a --no-trunc
容器详细参数:
docker inspect <container_id_or_name>
结合 bash 还原多个容器:
for c in $(docker ps -q); dorunlike $c
done
🏁 总结
无论你是开发人员还是运维工程师,掌握 runlike
和 docker-autocompose
都能极大提高你对 Docker 容器的可控性和复现能力。这两个工具简单高效,非常适合日常备份、迁移和自动化部署使用。
别再因为忘了当初是怎么跑起来的而头疼,赶快试试它们吧!
💬 如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、评论交流!