在日常服务器运维中,Docker 容器管理是最核心的操作之一。无论是重启服务、更新镜像,还是排查应用故障,掌握一套标准化的命令流程能极大提高效率。
本文整理了基于 Docker Compose 的常用管理命令、1Panel 环境下的应用路径以及一些进阶运维小技巧。
🌀 一、容器基础管理
如果你使用 Docker Compose 管理项目(推荐方式),以下命令是你的“家常便饭”。
1. 重启容器 vs 重建容器
很多新手分不清 restart 和 up -d 的区别,这里划重点:
| 命令 | 适用场景 | 效果 |
|---|---|---|
docker compose restart |
进程卡死、常规重启 | 仅重启当前容器,不加载配置变更。 |
docker compose up -d |
修改了 YAML、更新了镜像 | 重建容器,应用最新的环境变量和映射。 |
🔁 二、镜像更新全流程
当远程镜像发布新版本(如 MoviePilot 或 Jellyfin 更新)时,建议遵循以下标准步骤,既能保证更新,又能节省空间:
- 拉取最新镜像:
docker compose pull - 应用并重启:
docker compose up -d - 清理冗余数据:
更新后,旧镜像会变成虚悬镜像(显示为<none>),长期不清理会吃掉几十 GB 的磁盘。1
docker image prune -f
🛠️ 三、单个容器的精准操控
如果你只想操作某个特定应用(如 nezha-dashboard),而不想影响同目录下的其他服务,请直接调用 Docker 原生命令:
- 停止:
docker stop <容器名> - 启动:
docker start <容器名> - 查看实时日志:
docker logs -f --tail 100 <容器名> - 进入容器内部:
docker exec -it <容器名> sh(或bash)
📂 四、常用本地应用路径 (1Panel 环境)
在 1Panel 面板管理的服务器中,应用数据通常存放于以下路径。手动修改配置或迁移数据时,直接定位到这些目录即可:
- 🎥 媒体类:
/opt/1panel/apps/local/moviepilot/moviepilot/opt/1panel/apps/jellyfin/jellyfin/opt/1panel/apps/local/emby-amilys/emby-amilys
- ⚙️ 自动化类:
/opt/1panel/apps/local/vertex/localvertex/opt/1panel/apps/local/autobangumi/autobangumi
⚠️ 运维小技巧与避坑指南
1. 打造清晰的监控视图
默认的 docker ps 信息太乱?试试这个精简格式:
1 | docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" |
2. 容器“无限重启”排查
如果容器状态显示 Restarting 或 Exited (1),不要盲目重启,先看报错:
1 | docker logs --tail 50 <容器名> |
通常是由于配置文件路径挂载错误或端口冲突导致。
3. 让更新自动化:Watchtower
如果你懒得手动执行 pull 操作,可以部署 Watchtower。它会每隔 24 小时自动检查并更新所有容器:
1 | docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --interval 86400 |
🎉 总结
熟练掌握 Docker Compose 的生命周期管理,不仅能让你的 HomeLab 运行得更稳,也能在服务出现异常时快速定位问题。
建议: 即使使用了 1Panel 等面板,也建议多尝试 SSH 命令行操作。图形化界面虽然方便,但命令行能让你在网络环境极差、面板打不开的极端情况下依然拥有对服务器的绝对掌控权。