Docker容器运维命令行

Docker 常用命令:容器、镜像、日志与清理

按实际排障流程整理 Docker 容器、镜像、日志、网络、数据卷和磁盘清理命令,解释 run、exec、logs、inspect 与 prune 的使用边界。

·更新于 ·阅读约 12 分钟·计算中...

Docker 命令最实用的记忆顺序是:先用 ps 找容器,用 logs 看应用输出,用 inspect 查配置,用 exec 进入运行中的容器;确认无用资源后再执行删除或 prune。不要把“一键清理”命令当作日常第一步。

目录

查看版本与运行状态

docker version
docker info
docker ps
docker ps -a

docker version 同时展示客户端和服务端信息;只有 Client 信息时,通常说明 daemon 或 Docker Desktop 未正常连接。

镜像命令

docker image ls
docker pull nginx:alpine
docker image inspect nginx:alpine
docker image rm nginx:alpine
docker image history nginx:alpine

生产环境避免依赖含义会变化的 latest,尽量固定可追踪版本。删除镜像前检查是否仍被容器引用。

构建镜像:

docker build -t my-app:1.0.0 .
docker build --pull -t my-app:1.0.0 .

Dockerfile 分层、缓存和 .dockerignoreDockerfile 与 .dockerignore 指南

创建和运行容器

docker run --name web -d -p 127.0.0.1:8080:80 nginx:alpine
  • --name web:指定可读名称。
  • -d:后台运行。
  • -p 127.0.0.1:8080:80:把宿主机本地 8080 映射到容器 80。
  • --rm:容器停止后自动删除,适合一次性任务。
  • -e KEY=value--env-file:注入运行环境变量。

绑定 127.0.0.1 只允许宿主机本地访问;使用 0.0.0.0 或省略 IP 可能暴露到外部网络,必须结合防火墙和部署环境判断。可继续阅读 Docker 中 localhost 与 0.0.0.0

容器生命周期

docker start web
docker stop web
docker restart web
docker rename web web-old
docker rm web-old
docker rm -f web-old

docker stop 会先发送停止信号并等待;docker rm -f 会强制停止并删除容器,只在确认数据和任务状态后使用。容器删除不会自动删除命名数据卷。

日志与进程

docker logs web
docker logs -f --tail 200 web
docker logs --since 30m web
docker top web
docker stats web

docker logs 读取容器日志驱动收集的 stdout/stderr,不一定包含应用写入容器文件的日志。生产环境还要设置日志轮转,避免磁盘被无限增长的日志占满。

进入容器与复制文件

docker exec -it web sh
docker exec web env
docker cp web:/etc/nginx/nginx.conf ./nginx.conf

Alpine 镜像通常只有 sh,不一定有 bashexec 进入的是正在运行的容器;它与 docker run 创建新容器不同。临时修改容器文件不会更新镜像,重新部署后会丢失,应回到 Dockerfile 或挂载配置修复。

inspect 与格式化输出

docker inspect web
docker inspect --format '{{.State.Status}}' web
docker inspect --format '{{json .NetworkSettings.Networks}}' web

inspect 是排查端口、挂载、环境变量、网络和重启状态的主要工具。注意输出可能包含环境变量中的敏感信息,不要直接复制到公开工单。

数据卷和 bind mount

docker volume ls
docker volume create app-data
docker volume inspect app-data

docker run --rm \
  --mount type=volume,src=app-data,dst=/data \
  alpine ls -la /data

Docker 官方更推荐语义明确的 --mount。命名 volume 由 Docker 管理;bind mount 直接映射宿主机路径。删除容器前先确认重要数据是否持久化,以及是否有备份。

网络命令

docker network ls
docker network create app-net
docker network inspect app-net
docker network connect app-net web
docker network disconnect app-net web

连接同一用户自定义网络的容器可以通过容器名解析。不要在应用里硬编码容器 IP,因为重新创建后地址可能变化。

磁盘空间与安全清理

先查看占用:

docker system df
docker ps -a
docker image ls
docker volume ls

再按类型清理:

docker container prune
docker image prune
docker builder prune

每条 prune 都会要求确认。docker system prune -a 范围更大,会删除未使用镜像等资源;docker volume prune 可能删除尚未被容器引用但仍有重要数据的卷。执行前必须核对备份和实际引用,不要放进未经审查的定时任务。

导出与导入

镜像跨环境传输:

docker image save my-app:1.0.0 -o my-app.tar
docker image load -i my-app.tar

docker export/import 操作的是容器文件系统快照,会丢失镜像历史和部分元数据,通常不适合替代 registry 或 save/load

一套排障顺序

docker ps -a
docker logs --tail 200 web
docker inspect web
docker stats web
docker exec -it web sh

先收集证据再重启。直接 restart 可能暂时恢复服务,却会丢失导致退出的现场信息。

参考资料

订阅 FreeMac

每周精选:免费 Mac 软件评测、可信来源更新、替代方案和少折腾指南。