Docker 命令最实用的记忆顺序是:先用 ps 找容器,用 logs 看应用输出,用 inspect 查配置,用 exec 进入运行中的容器;确认无用资源后再执行删除或 prune。不要把“一键清理”命令当作日常第一步。
目录
- 查看版本与运行状态
- 镜像命令
- 创建和运行容器
- 容器生命周期
- 日志与进程
- 进入容器与复制文件
- inspect 与格式化输出
- 数据卷和 bind mount
- 网络命令
- 磁盘空间与安全清理
- 导出与导入
- 一套排障顺序
- 参考资料
查看版本与运行状态
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 分层、缓存和 .dockerignore 见 Dockerfile 与 .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,不一定有 bash。exec 进入的是正在运行的容器;它与 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 可能暂时恢复服务,却会丢失导致退出的现场信息。
参考资料
继续阅读
Linux 常用命令:文件、进程、网络速查
按文件目录、文本查看、进程排查、网络连接和环境变量五类整理 Linux 常用命令,重点讲开发与运维里最常见的 ls、cd、cp、mv、rm、find、ps、top、curl、ssh、ip。
11 分钟Dockerfile 与 .dockerignore:Node.js 镜像构建指南
从构建上下文、Dockerfile 分层和多阶段构建讲起,给出 Node.js 项目的 Dockerfile 与 .dockerignore 示例,并解释缓存、镜像体积和敏感文件边界。
10 分钟反向代理是什么:Nginx 配置与排障指南
解释正向代理与反向代理的区别,并通过 Nginx proxy_pass、请求头、WebSocket、超时和日志配置展示应用上线时的常见做法。
订阅 FreeMac
每周精选:免费 Mac 软件评测、可信来源更新、替代方案和少折腾指南。