微信扫码 , 快速开始
2
23
0
江湖小虾
给大家分享一个自己开发并开源的 Docker 容器管理工具 - DockerTools。
这是一个 Docker 容器配置导出工具,主要功能是将运行中的 Docker 容器导出为 docker-compose.yml 配置文件,支持敏感信息分离、隐私保护和批量导出。
docker-compose.yml
GitHub 地址:https://github.com/MG5921MY/docker-tools-public.git 开源协议:MIT License 开发语言:Shell Script (Bash)
https://github.com/MG5921MY/docker-tools-public.git
--privacy
!
${VAR}
docker run
✅ 本工具会导出:
❌ 本工具不会导出:
请务必注意:
DATA_BACKUP_NOTICE.md
# 1. 克隆项目 git clone https://github.com/MG5921MY/docker-tools-public.git cd DockerTools/export/sh # 2. 赋予执行权限 chmod +x docker-export-compose.sh # 3. 查看帮助(中文) ./docker-export-compose.sh --help-cn # 4. 查看版本信息 ./docker-export-compose.sh --version
# 导出单个容器(开发环境) ./docker-export-compose.sh my-container # 导出单个容器(生产环境 - 推荐) ./docker-export-compose.sh --type env --privacy my-container # 批量导出所有运行中的容器 ./docker-export-compose.sh --all-run --type env -o ~/backup # 从文件批量导出 ./docker-export-compose.sh --file containers.txt --type env # 导出所有容器(包括停止的) ./docker-export-compose.sh --all --type env # 只导出已停止的容器 ./docker-export-compose.sh --all-stop -o ~/stopped-backup
./docker-export-compose.sh my-app
--type env my-app
--type env --privacy my-app
--file containers.txt
--all-run --type env
项目包含详细文档,覆盖使用、安全、配置各方面:
# 使用安全模式导出 ./docker-export-compose.sh --type env --privacy nginx-web # 生成的文件结构 ./output/nginx-web/ **── docker-compose.yml # Compose 配置(使用 ${VAR} 引用) **── .env # 实际敏感数据(不提交到 Git) **── .env.example # 安全模板(可以分享) **── .gitignore # Git 配置(自动忽略 .env) **── README.md # 使用说明 # 启动容器 cd output/nginx-web docker compose up -d
# 备份所有运行中的容器 ./docker-export-compose.sh --all-run --type env --privacy -o ~/docker-backup # 打包备份 cd ~ tar -czf docker-backup-$(date +%Y%m%d).tar.gz docker-backup/ # 如果需要备份数据卷(重要!) # 根据导出的配置查看数据卷路径,然后手动备份 # 例如:tar -czf data-backup.tar.gz /path/to/data
# 创建容器列表文件 cat > containers.txt << 'EOF' # 我的生产环境容器列表 nginx-web mysql-db redis-cache # mongo-dev # 这个是注释,会被跳过 app-backend EOF # 批量导出 ./docker-export-compose.sh --file containers.txt --type env -o ~/production-backup # 生成的目录结构 ~/production-backup/ **── nginx-web/ ** **── docker-compose.yml ** **── .env ** **── ... **── mysql-db/ ** **── docker-compose.yml ** **── .env ** **── ... **── redis-cache/ ** **── ... **── app-backend/ **── ...
# 1. 导出配置(使用隐私模式) ./docker-export-compose.sh --type env --privacy my-app # 2. 进入输出目录 cd output/my-app # 3. 初始化 Git(.env 会被自动忽略) git init git add docker-compose.yml .env.example README.md .gitignore git commit -m "Add my-app container config" # 4. 推送到远程仓库 git remote add origin https://github.com/yourname/my-app-config.git git push -u origin main # 5. 团队成员使用 # git clone https://github.com/yourname/my-app-config.git # cd my-app-config # cp .env.example .env # nano .env # 填写实际的敏感信息 # docker compose up -d
# 创建备份脚本 cat > /opt/scripts/docker-backup.sh << 'EOF' #!/bin/bash BACKUP_DIR="/backup/docker/$(date +%Y%m%d)" SCRIPT_DIR="/opt/docker-tools/export/sh" # 导出所有运行中的容器 cd "$SCRIPT_DIR" ./docker-export-compose.sh --all-run --type env -o "$BACKUP_DIR" --quiet # 压缩备份 tar -czf "$BACKUP_DIR.tar.gz" "$BACKUP_DIR" rm -rf "$BACKUP_DIR" # 清理 30 天前的备份 find /backup/docker -name "*.tar.gz" -mtime +30 -delete EOF chmod +x /opt/scripts/docker-backup.sh # 添加到 crontab(每天凌晨 2 点执行) # 0 2 * * * /opt/scripts/docker-backup.sh
# 编辑配置文件 cd DockerTools/export/sh nano config # 添加自定义关键词 # 添加敏感关键词 COMPANY_SECRET INTERNAL_KEY CUSTOM_API_TOKEN # 排除某些包含敏感词但实际不敏感的变量 !PUBLIC_DATABASE_URL !DEMO_PASSWORD !TEST_SECRET_KEY # 导出时会使用自定义配置 ./docker-export-compose.sh --type env my-app
# 使用 dry-run 模式预览将要执行的操作 ./docker-export-compose.sh --dry-run --all-run # 静默模式(最小化输出) ./docker-export-compose.sh --quiet --type env my-app # 覆盖现有文件(而不是自动递增) ./docker-export-compose.sh --overwrite my-app
密码相关:PASSWORD、PASSWD、PWD、PASS 密钥和令牌:SECRET、TOKEN、KEY、APIKEY、API_KEY、API_SECRET 认证相关:AUTH、AUTHENTICATION、CREDENTIALS、SESSION 证书相关:CERT、CERTIFICATE、SSL、TLS、PRIVATE、PEM 加密相关:SALT、HASH、ENCRYPTION、CIPHER、AES、RSA 数据库相关:DATABASE_URL、DB_PASSWORD、MYSQL_PASSWORD、POSTGRES_PASSWORD 管理员相关:ADMIN、ROOT、ADMIN_PASSWORD、ROOT_PASSWORD 云服务密钥:AWS_SECRET、AWS_ACCESS、AZURE_、GCP_、GOOGLE_ 其他:SIGNING_KEY、JWT_SECRET、WEBHOOK_SECRET
--type env
--help-cn
导出的配置包含容器的所有关键信息:
新增功能:
安全增强:
改进:
完整免责声明请查看项目中的 DISCLAIMER.md 文件
详细的贡献指南请参考 CONTRIBUTING.md 文件。
CONTRIBUTING.md
如果遇到问题:
--help
提交 Issue 时请包含:
DockerTools 是一个功能完善、文档详尽、安全可靠的 Docker 容器配置导出工具。适合个人开发者、运维工程师和团队使用。
git clone https://github.com/MG5921MY/docker-tools-public.git
chmod +x docker-export-compose.sh
./docker-export-compose.sh --type env --privacy my-container
如果这个工具对你有帮助,欢迎 Star ⭐ 支持!
有任何问题或建议,欢迎在 GitHub 提 Issue 讨论!
期待你的反馈和贡献,一起让 DockerTools 变得更好!
Docker 基础教学 - Hello World 入门指南.md
安全使用指南.md
本文档基于 DockerTools v2.2 版本编写 最后更新:2025-11-07 文档版本:1.0
🎯 核心价值:让 Docker 容器配置管理更简单、更安全、更专业!
举报
附件:docker-export-compose.zip
sh 脚本 附件 20251107 更新 脚本附件 注意验证哈希值 docker-export-compose.sh 的SHA256为: 1E1C63FF24395E08C8F0FBE94A9D16C75C2D55130867BE6B2022BF1EB05177FE
docker-export-compose.zip 的SHA256为: 3F3B8FAFCD53A9ACA9C031A2188D5A547F09AE98C4C60DD962559129D037548E
您需要 登录 才可以下载或查看,没有账号?立即注册
注意此脚本为避免不可预测行为,不会导出持久化目录,请自行备份持久化目录。
关于数据备份说明:本工具专注于导出容器配置(docker-compose.yml),不包含数据备份。
原因是:持久化数据规模不可控(可能达数百GB)、需要专业备份工具(如 mysqldump)、权限和一致性问题复杂。
建议:先用本工具导出配置了解数据卷路径,再根据实际情况使用专业工具手动备份数据。
配置导出≠数据备份,两者需分别处理。
清风小道君 发表于 2025-11-7 14:23 注意此脚本为避免不可预测行为,不会导出持久化目录,请自行备份持久化目录。 ...
6
140
初出茅庐
屯屯鼠 发表于 2025-11-7 17:54 有一个docker2compose的项目,直接用compose就能运行,你这个没有打包推送到仓库,有点麻烦 ...
本版积分规则 发表回复
飞牛私有云社区上线,晒NAS活动纪念勋章