一个主打便捷的 Docker 容器管理工具,支持所有平台。
- 一键更新容器(自动拉取最新镜像并重建)
- 指定镜像和 tag 更新
- 启动、停止、重启容器
- 重命名容器
- 删除无 TAG 镜像 / 未使用镜像
- 更新进度实时查看
- 容器配置备份与恢复
- 导出为 docker-compose.yml
- 群组管理(批量更新、定时任务、批量启动/停止/重启)
- 容器日志实时查看
- 容器网络信息显示(端口映射、网络模式、内部 IP)
- Bark 推送通知(镜像更新、群组任务完成)
- 容器状态变化实时监控与通知
- 镜像来源标记(远程/本地,自动识别私有镜像)
- 私有 Registry 认证(支持多个私有库,密码加密存储)
- 多环境管理(连接远程 DockerCopilot 实例,统一管理多个 Docker 环境)
- 重启服务(在 Web 界面一键重启 DockerCopilot 服务)
创建 docker-compose.yml 文件:
services:
dockercopilot:
image: muuua/docker-copilot:latest
container_name: dockercopilot
restart: always
privileged: true
network_mode: bridge
ports:
- 12712:12712
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
environment:
- TZ=Asia/Shanghai
- secretKey=your_secret_key_here # 必填,至少8位且非纯数字启动服务:
docker-compose up -d访问 http://localhost:12712/manager 进入管理界面。
docker run -d \
--name dockercopilot \
--restart always \
--privileged \
-p 12712:12712 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ./data:/data \
-e TZ=Asia/Shanghai \
-e secretKey=your_secret_key_here \
muuua/docker-copilot:latest| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
secretKey |
✅ | - | JWT 认证密钥,要求至少 8 位且非纯数字 |
TZ |
❌ | Asia/Shanghai |
时区设置,影响定时任务和日志时间 |
DATA_DIR |
❌ | /data |
数据目录,存放 SQLite 数据库 |
BACKUP_DIR |
❌ | /data/backups |
容器配置备份目录 |
DOCKER_HOST |
❌ | unix:///var/run/docker.sock |
Docker API 地址 |
DelOldContainer |
❌ | true |
更新容器后是否删除旧容器,设为 false 保留 |
githubProxy |
❌ | - | GitHub 代理地址,用于检查程序更新 |
支持自定义 Docker Registry 镜像地址,解决国内访问 Docker Hub 慢的问题:
| 变量名 | 默认值 | 说明 |
|---|---|---|
REGISTRY_MIRRORS_ENABLED |
false |
是否启用自定义镜像地址 |
REGISTRY_MIRRORS |
- | 镜像地址列表,逗号分隔(如 docker.m.daocloud.io,docker.1ms.run) |
镜像加速示例:
environment:
- REGISTRY_MIRRORS_ENABLED=true
- REGISTRY_MIRRORS=docker.m.daocloud.io,docker.1ms.run优先级:用户配置 > 官方 Docker Hub > 内置加速器列表
支持 HTTP/HTTPS/SOCKS5 代理,应用于所有 HTTP 请求:
| 变量名 | 默认值 | 说明 |
|---|---|---|
PROXY_ENABLED |
false |
是否启用代理 |
PROXY_TYPE |
http |
代理类型:http、https、socks5 |
PROXY_HOST |
- | 代理服务器地址 |
PROXY_PORT |
- | 代理端口 |
PROXY_USER |
- | 代理用户名(可选) |
PROXY_PASS |
- | 代理密码(可选) |
代理配置示例:
environment:
- PROXY_ENABLED=true
- PROXY_TYPE=http
- PROXY_HOST=192.168.1.1
- PROXY_PORT=7890代理连接失败时会自动回退到直连。
支持配置私有 Docker Registry 的认证信息,用于拉取需要认证的私有镜像:
| 配置项 | 说明 |
|---|---|
| Registry 地址 | 私有 Registry 的主机地址(如 registry.example.com) |
| 用户名 | Registry 认证用户名 |
| 密码 | Registry 认证密码(AES 加密存储) |
| 允许不安全连接 | 是否允许 HTTP 连接(默认 HTTPS) |
配置方式:
在 Web 界面「设置」→「私有 Registry 认证」中配置,支持添加多个私有 Registry。
工作原理:
- 检查镜像更新时,自动根据镜像名匹配对应的私有 Registry 认证
- 若远程 Registry 返回 404(镜像不存在),自动标记为「本地镜像」
- 镜像列表中显示来源标签:「远程」(绿色)或「本地」(灰色)
私有镜像(如
registry.example.com/myapp:latest)需要配置对应 Registry 的认证信息才能正常检查更新。
适用于 NAS、树莓派等低性能设备优化:
| 变量名 | 默认值 | 说明 |
|---|---|---|
LOW_POWER_MODE |
false |
低性能模式,启用后所有并发操作改为顺序执行 |
MAX_CONCURRENT_CHECKS |
10 |
镜像检查最大并发数(范围 1-20,低性能模式自动设为 1) |
CHECK_INTERVAL_MINUTES |
30 |
镜像自动检查间隔(分钟),设为 0 禁用自动检查 |
DISABLE_AUTO_CHECK |
false |
禁用启动时自动检查镜像更新 |
低性能模式示例:
services:
dockercopilot:
image: muuua/docker-copilot:latest
container_name: dockercopilot
restart: always
privileged: true
ports:
- 12712:12712
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
environment:
- TZ=Asia/Shanghai
- secretKey=your_secret_key_here
- LOW_POWER_MODE=true
- MAX_CONCURRENT_CHECKS=1
- CHECK_INTERVAL_MINUTES=60所有配置支持三种方式设置,优先级从高到低:
- 环境变量(最高优先级)
- Web 界面设置(保存到数据库)
- 默认值
环境变量设置会覆盖数据库中的配置,适合 Docker 部署时固定配置。
services:
dockercopilot:
# ... 其他配置
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
- /path/to/backups:/backups # 自定义备份目录
environment:
- BACKUP_DIR=/backupsservices:
dockercopilot:
# ... 其他配置
environment:
- DOCKER_HOST=tcp://192.168.1.100:2375
# 不需要挂载 docker.sockDockerCopilot 支持通过 Bark 发送推送通知到 iOS 设备。
在设置页面配置 Bark 推送:
- 在 iOS 设备上安装 Bark App
- 获取推送密钥(App 首页显示)
- 在 DockerCopilot 设置页面填写:
- 服务器地址:默认
https://api.day.app,可自建服务器 - 推送密钥:Bark App 中获取的密钥
- 通知模式:
- 始终通知:所有事件都发送通知
- 仅失败时通知:只在操作失败时通知
- 仅全部成功时通知:只在全部成功时通知
- 显示具体明细:在通知中显示每个容器的详细结果
- 服务器地址:默认
实时监控 Docker 容器状态变化,在以下事件发生时发送通知:
| 事件类型 | 说明 |
|---|---|
| 容器启动 | 容器 start 事件 |
| 容器停止 | 容器正常 stop 事件 |
| 异常退出 | 容器 die 事件(推荐开启) |
| 容器重启 | 容器 restart 事件 |
| 容器创建 | 新容器 create 事件 |
| 容器删除 | 容器 destroy 事件 |
| 健康检查通过 | 容器 health_status: healthy 事件 |
| 健康检查失败 | 容器 health_status: unhealthy 事件(推荐开启) |
在设置页面的「容器状态变化通知」区域可以:
- 开启/关闭状态监控总开关
- 选择需要通知的事件类型
注意:容器状态变化通知依赖 Bark 推送配置,请先完成 Bark 配置。
DockerCopilot 支持连接多个远程 DockerCopilot 实例,实现统一管理多个 Docker 环境。
- 本地环境:程序启动时自动创建,代表当前运行的 Docker 环境
- 远程环境:连接其他部署的 DockerCopilot 实例
- 环境切换:在顶部导航栏快速切换当前操作的环境
- 统计信息:显示每个环境的容器数、镜像数、Volume 数、CPU 核心数、内存大小
- 在「环境管理」页面点击「添加环境」
- 填写远程 DockerCopilot 的 URL(如
http://192.168.1.100:12712) - 填写远程系统的
secretKey - 点击「测试连接」验证配置
- 保存后自动刷新环境状态
- 切换环境:点击顶部导航栏的环境选择器,选择目标环境
- 连接环境:在环境列表点击「连接」按钮切换到该环境
- 刷新状态:点击「刷新」更新环境的统计信息
切换到远程环境后,容器列表、镜像列表等页面将显示远程环境的数据,所有操作也将在远程环境执行。
在「环境管理」页面,每个环境都提供「重启服务」按钮,可一键重启对应环境的 DockerCopilot 服务。
- 本地环境:直接重启当前运行的容器
- 远程环境:调用远程实例的重启 API
前提条件:所有环境的容器都需配置重启策略,确保重启后 Docker 自动拉起服务:
# Docker Compose
restart: always # 或 unless-stopped# Docker Run
docker run --restart=always ... # 或 --restart=unless-stopped本地服务重启后页面会自动刷新;远程服务重启后会自动刷新环境状态。
- Go 版本:1.23+
- 前端:Vue 3 + Vite + TailwindCSS
- 数据库:SQLite3
# 开发模式运行
./dev.sh
# 构建前端
cd frontend && npm run build
# 构建后端
go build -o dockerCopilot .确保已正确挂载 Docker socket:
volumes:
- /var/run/docker.sock:/var/run/docker.sock并且容器具有访问权限(privileged: true)。
默认情况下更新后会删除旧容器。如需保留,设置环境变量:
environment:
- DelOldContainer=false检查时区设置是否正确:
environment:
- TZ=Asia/Shanghai