Docker 相关操作命令详解及常用容器部署有哪些?
作者:Sylearn
链接:https://www.zhihu.com/question/487001253/answer/1964278699546349819
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

核心概念与工作流

生命周期

镜像管理

网络与存储

调试与监控

清理与优化
链接:https://www.zhihu.com/question/487001253/answer/1964278699546349819
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
核心概念与工作流
- 什么是 Docker:开源容器化平台,用来打包、发布、运行应用。
- 核心组件:镜像、容器、Registry、Dockerfile。镜像对应可重用的运行时模板,容器则是镜像的活体实例。
- 典型优势:环境一致性、资源隔离、秒级启动、多阶段构建。
- 基础工作流:撰写
Dockerfile→docker build构建镜像 →docker push推送仓库 →docker run部署。

真正的效率来自标准化:团队若能围绕
Dockerfile管理环境,将上线风险降到最低。
容器生命周期:创建、管理、删除
生命周期命令决定了容器的“生老病死”:
# 交互式调试
docker run -it ubuntu bash
# 指定端口和名称
docker run -d --name web -p 8080:80 nginx
# 查看与控制
docker ps # 仅运行中
docker ps -a # 包含已停止
docker stop web # 优雅停止
docker rm web # 删除容器
个人建议将 docker run 和 docker ps 搭配别名,提高排障效率;当容器异常退出时,docker logs <container> 是定位的第一步。

镜像管理:构建、标记与清理
- 获取镜像:
docker pull redis、docker pull nginx:1.25。 - 构建镜像:
docker build -t team/app:1.0 .。若需跳过缓存可加--no-cache。 - 标记与分享:
docker tag team/app:1.0 registry/app:stable。 - 清理策略:使用
docker image prune -a释放空间,但要先确认无容器再依赖这些镜像。
镜像命名推荐遵循 {组织}/{服务}:{版本},并在 CI 中自动打 tag,方便回滚。

网络与存储:通信与数据持久化
- 网络:
docker network create internal-net构建隔离网络,docker run --network internal-net让容器加入。 - 数据卷:
docker volume create data-store,或直接docker run -v data-store:/var/lib/postgresql/data。 - 本地绑定挂载:
docker run -v $(pwd)/logs:/app/logs,适合调试期实时查看输出。
在生产环境中,建议为数据库容器单独创建卷,避免容器销毁导致数据遗失;跨主机通信可考虑 overlay 网络或直接使用 Kubernetes。

调试与监控:日志、进程、资源
- 日志诊断:
docker logs -f app实时追踪;支持--tail、--since限制范围。 - 容器调试:
docker exec -it app bash进入终端,docker inspect app查看完整配置。 - 性能指标:
docker stats查看资源使用,docker events追踪事件流,docker diff比较文件变化。
当容器行为异常时,笔者认为应先通过 docker ps 确认状态,再用 docker logs 与 docker stats 判断是代码问题还是资源瓶颈,最后才进入 exec 进一步排查。

清理与优化:释放资源的日常
- 一键清理:
docker system prune删除未使用的容器、网络、镜像,可加--volumes覆盖数据卷。 - 分类清理:
docker container prune、docker image prune -a、docker network prune。 - 磁盘评估:
docker system df查看磁盘占用。 - 最佳实践:定期清理、使用
.dockerignore、多阶段构建、合理打标签。
建议在 CI/CD 中加入每周的清理任务,或者在主机层面设置 cron job,避免磁盘爆满触发告警。

Docker Compose:多容器协同
Compose 让多服务编排变得直观:
version: "3.8"
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: secret
常用命令:
docker-compose up -d:后台启动所有服务。docker-compose ps:查看状态。docker-compose logs -f:集中查看日志。docker-compose exec db bash:进入指定服务。
推荐将 Compose 文件与应用仓库同版本管理,搭配 .env 管理敏感参数。
实战技巧:效率与安全全覆盖
- 快捷操作:
docker run --rm自动清理临时容器;docker cp在容器与宿主机间同步文件。 - 健康检查:在
Dockerfile或 Compose 中添加HEALTHCHECK,保障负载均衡只转发到健康实例。 - 资源限制:
docker run -m 512m --cpus=2避免某个容器耗尽资源。 - 安全建议:限制使用 root、管理 secrets、定期更新基础镜像、通过
--cap-drop降低权限。
在复杂项目中,笔者会组合“健康检查 + 资源限制 + 定期清理”三板斧,确保容器长期稳定运行。

