Docker 常用命令入门:镜像、容器与日志一看就会

2026-10-24

标签Docker命令行容器入门

Docker 把程序和它的运行环境打包成轻量级容器,让「在我电脑上能跑」变成「在哪都能跑」。但对新手来说,面对一长串命令常常不知从哪下手。本文只讲最常用的那十几条:按「拉镜像→跑容器→看状态→看日志→清理」这条主线走一遍,你就能独立完成日常的容器操作。

先理解三个核心概念

镜像(Image)是只读的模板,相当于"安装光盘";容器(Container)是镜像运行起来的实例,相当于"正在运行的程序";仓库(Registry)是存放镜像的地方,Docker Hub 是官方公共仓库。

关系可以记成一句话:从仓库拉取镜像,用镜像创建并运行容器,容器可以随时停止、删除、重新创建。

拉取镜像:docker pull 与 docker images

从官方仓库拉取镜像:

docker pull nginx

不带标签默认拉 latest 版本,也可以指定版本号,例如 docker pull python:3.12。查看本地已有镜像:

docker images

列表会显示仓库名、标签、镜像 ID、创建时间和大小,帮助你知道本地有什么、缺什么。

启动容器:docker run

docker run 是最常用的启动命令,一次完成「创建+启动」:

docker run -d -p 8080:80 nginx

这条命令的含义拆开看:-d 表示后台运行不占终端,-p 8080:80 把本机 8080 端口映射到容器内 80 端口(冒号左边是本机、右边是容器),nginx 是镜像名。启动后浏览器访问 http://localhost:8080 就能看到 Nginx 欢迎页。

其他常用参数:--name myweb 给容器起名字便于管理;-it 以交互模式进入容器;-v 本机目录:容器目录 挂载数据卷,容器删了数据还在。

拉取镜像后想直接进入交互终端,可以用:

docker run -it ubuntu bash

这条命令会启动一个 Ubuntu 容器并进入它的命令行,适合快速试验。

查看容器:docker ps

查看正在运行的容器:

docker ps

查看所有容器(包括已经停止的),加 -a 参数:

docker ps -a

列表里的关键信息有容器 ID、镜像、状态和端口映射。容器 ID 很长,实际操作时取前几位即可,例如 docker stop 1a2b。

端口、环境变量与数据卷:docker run 进阶参数

docker run 的几个参数决定容器和本机怎么"打交道",值得单独说清楚:

端口映射 -p:冒号左边是本机端口,右边是容器内端口。-p 8080:80 就是访问本机 8080 端口时进入容器 80 端口。如果本机 8080 已被占用,改成 -p 9090:80 即可,容器内部不用动。

环境变量 -e:很多镜像用环境变量做配置,例如给 MySQL 容器设密码:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

数据卷挂载 -v:容器被删除后内部数据默认一起消失,把本机目录挂进去就能持久保存:

docker run -d -p 8080:80 -v D:/myweb:/usr/share/nginx/html nginx

这条命令把本机的 D:/myweb 目录映射到容器内 Nginx 的网页目录,改本机文件,容器立刻生效;容器删了重建,数据也还在。Windows 上挂载本地盘符前,记得在 Docker Desktop 设置里把对应磁盘加入 File Sharing 共享列表,否则会报权限错误。

查看日志:docker logs

程序运行异常时,日志是第一手排查资料:

docker logs 容器ID或名字

实时跟踪最新日志加 -f,只显示最近 N 行加 --tail,例如 docker logs -f --tail 50 容器名。Windows 上如果是 Docker Desktop + WSL2 后端,绝大部分运行问题都能通过日志定位。

进入容器内部:docker exec

需要在运行中的容器里执行命令时,用 docker exec 配合 -it 进入交互终端:

docker exec -it 容器ID或名字 /bin/bash

多数 Linux 基础镜像内置 bash;如果提示找不到 bash,换成 /bin/sh 即可。进去后可以查看文件、运行命令做调试,退出输入 exit。

停止、删除与清理

更新代码后常见的"删了重来"流程,对新手最安全、不容易把状态搞混:

docker stop 容器ID或名字
docker rm 容器ID或名字
docker rmi 镜像ID

三条命令分别对应停止容器、删除容器、删除镜像。注意顺序:先停容器、再删容器、最后删镜像,运行时容器是删不掉的。一次性清理所有已停止的容器可以用:

docker container prune

它会询问是否确认,输入 y 回车即可,Docker 官方设计上就是"用完即扔",镜像随时能重建,不用担心删错。

常用命令速查表

| 想做什么 | 命令 | |---------|------| | 拉取镜像 | docker pull 镜像名 | | 查看本地镜像 | docker images | | 启动容器(后台+端口映射) | docker run -d -p 8080:80 镜像名 | | 查看运行中的容器 | docker ps | | 查看所有容器 | docker ps -a | | 查看日志 | docker logs -f 容器名 | | 进入容器终端 | docker exec -it 容器名 /bin/bash | | 停止容器 | docker stop 容器名 | | 删除容器 | docker rm 容器名 | | 删除镜像 | docker rmi 镜像ID | | 清理停止的容器 | docker container prune |

给项目补充说明:docker compose 一句启动

多容器项目需要一次启动多个服务(比如 Web + 数据库),一条条 docker run 太繁琐,Docker 官方为此提供了 compose 工具。在项目目录写一个 docker-compose.yml 描述各服务,然后执行:

docker compose up -d

即可按配置一次性启动全部服务,docker compose down 全部停止。新版 Docker Desktop 已内置 compose 插件,无需额外安装。对新手来说,先把单容器命令跑熟,再用 compose 管理多容器是合理的进阶路径——本文速查表里的命令在 compose 场景下同样适用。

装完做这几件确认

  • [ ] docker images 能看到刚拉取的镜像
  • [ ] docker ps 里容器状态是 Up 而不是 Exited
  • [ ] 浏览器能打开 http://localhost:8080 看到应用页面
  • [ ] docker logs 容器名 能输出正常启动日志