docker 命令详解
更新时间:2026-08-28。本文是「一个命令一个命令」系列,聚焦
docker——容器与云原生命令族(见容器与云原生命令族)的核心。现代部署几乎离不开它。
docker 是容器引擎的命令行客户端。容器(container)可以理解为一个"轻量虚拟机"——共享宿主机内核,但拥有独立的文件系统、网络和进程空间。docker 把"应用 + 依赖"打包成镜像(image,只读模板),运行时实例化成容器。
一、核心概念三件套
| 概念 | 说明 |
|---|---|
| 镜像 image | 只读模板,由 Dockerfile 构建,类似"安装盘" |
| 容器 container | 镜像的运行实例,可读写层叠加在镜像上 |
| 仓库 registry | 存镜像的地方(如 Docker Hub、私有仓库) |
镜像和容器的关系就像"程序"和"进程":镜像是静态文件,容器是跑起来的活实例,一个镜像可以起多个容器。卷(volume)则是容器外持久化数据的机制——容器删了数据不丢,靠挂载 volume。
二、生命周期:run / ps / stop
docker run -d -p 8080:80 --name web nginx # 后台起一个 nginx,映射端口
docker ps # 看运行中的容器
docker ps -a # 含已停止的
docker stop web # 停容器
docker rm web # 删容器(stop 后)
docker run --rm -it alpine sh # --rm 退出即删,-it 交互终端
docker run的常用旗标要记牢:-d后台、-p 宿主:容器端口映射、--name起名好管理、-v挂卷、--rm用完即删(临时测试神器)、-it拿交互终端。-p 8080:80表示访问宿主机 8080 即到容器 80,容器端口不暴露公网就靠这层映射。
三、进容器与看日志
docker exec -it web bash # 进运行中的容器开 shell
docker logs web # 看容器 stdout 日志
docker logs -f web # 实时跟(tail -f)
docker logs --tail 100 web # 看最后 100 行容器里应用通常把日志打到 stdout,由 docker 收集,
docker logs就是查它们的入口(配合-f、--tail像tail -f)。排障时docker exec -it <名> sh进去看一眼配置文件、跑个命令,比盲目重启强。
四、镜像管理
docker images # 列出本地镜像
docker build -t myapp:v1 . # 按当前目录 Dockerfile 构建
docker pull nginx:alpine # 拉镜像
docker rmi myapp:v1 # 删镜像
docker system df # 看镜像/容器占的空间
docker system prune -a # 清理悬空镜像、停止的容器(释放空间)磁盘被 docker 吃满很常见,
docker system df先看谁占的多,prune清理不再用的悬空镜像和停止容器能回收大量空间——但-a会删所有未被容器引用的镜像,确认无误再跑。构建时打 tag(-t)便于版本管理,别一堆<none>无名镜像。
五、docker-compose:多容器编排
docker-compose up -d # 按 compose 文件起一整套服务
docker-compose ps # 看状态
docker-compose logs -f web # 看某服务日志
docker-compose down # 停并删整套单条
docker run管一两个容器还行,多个服务(web+db+redis)用docker-compose.yml描述依赖、网络、卷,一条up -d全起来。这是本地开发和小规模部署的标配。更大的规模才上 Kubernetes(见 kubectl)。
六、实战:排障"容器起不来"
docker ps -a # 看容器状态(Exited? 退出码?)
docker logs <id> # 看为什么挂
docker inspect <id> # 看完整配置(挂载/网络/环境变量)
docker run --rm myimg sh -c "cat /etc/app.conf" # 临时起一个查配置退出码非 0、反复重启,多半是配置错或依赖没起。docker logs 看报错、inspect 看挂载和环境变量是否正确,是标准排查三步。背后原理(namespace/cgroup)见 进程原理。
一句话总结
docker = 容器引擎客户端:镜像(模板)/容器(实例)/仓库三层;run -d -p -v --rm -it 控启停与映射、ps/logs/exec 查状态看日志进容器、images/build/pull/prune 管镜像空间、compose 编排多服务;容器起不来先看 ps -a 退出码再 logs。掌握它,单机部署基本无忧。