首页/云/Docker 容器速查/docker run 创建并启动容器
基础命令50 条

docker run 创建并启动容器

从镜像创建容器并启动进程的核心命令,把镜像、启动命令与运行参数组合在一次调用里;顺序为选项、镜像、命令。

Docker 容器速查云更新于 2026-10-13

docker run 是什么

docker run 是启动容器的主命令,把「创建容器」与「启动主进程」合并成一次调用:Docker 先按镜像生成可写层与容器元数据,再执行镜像里的 ENTRYPOINT/CMD,或执行命令行里指定的命令。它等价于 docker create 加 docker start,起临时容器、跑一次性任务、部署单容器服务都用它。

基本信息

语法docker run [选项] IMAGE [COMMAND] [ARG...]
等价写法docker container run(命令分组新语法,行为一致)
参数位置选项写在镜像名前,命令与参数写在镜像名之后
适用平台Linux / macOS / Windows 上的 Docker Engine 与 Docker Desktop

典型使用场景

  • 跑一次性任务:加 --rm 执行完自动清理,不在机器上留下停止的容器
  • 本地起依赖服务:数据库、缓存、消息队列用官方镜像直接拉起,避免在宿主机装环境
  • 部署单容器应用:规模不大时用 run 起服务,再配合重启策略做进程守护
  • 验证镜像行为:换 entrypoint 或换命令,看镜像里到底有什么、启动逻辑是否符合预期
  • 流水线里跑构建容器:把代码挂载进容器,用统一版本的工具链编译,避免污染构建机

常用示例

常用示例
docker run -d --name web -p 8080:80 nginx:1.27-alpine   # 后台起一个 web 服务
docker run --rm -it alpine:3.20 sh                        # 交互式试跑,退出即删
docker run --rm -v $PWD:/work -w /work golang:1.23 go build  # 挂载代码后编译
docker run -d --restart unless-stopped --name api app/api:v1.2  # 崩溃自动拉起
docker run --entrypoint cat alpine:3.20 /etc/os-release   # 换命令查看镜像内容

高频选项速查

选项作用注意
-d后台运行并打印容器 ID主进程退出容器就停止,它不是守护进程
-it分配伪终端并保持标准输入脚本与流水线里不要用 -t,会报没有终端
--name指定容器名全局唯一,含已停止容器也不能重名
--rm退出后自动删除容器与重启策略同时使用会报冲突
-p把容器端口映射到宿主机宿主端口被占用会直接启动失败
-v挂载数据卷或宿主目录源路径不存在时会被自动创建成目录
-e注入环境变量敏感值会出现在 inspect 与进程环境里
本地没有镜像时 run 会先尝试拉取,拉取失败才报错。容器名与宿主端口是全局资源,批量起服务前先规划命名与端口,避免起一半再改。
run 的配置在创建那一刻固化:端口、挂载、环境变量、网络都不能事后修改,只能删掉容器重建。Compose 与各种管理面板做的事,本质只是替你生成这些参数。
容器起不来时按顺序排查:docker ps -a 看状态是否已 Exited,docker logs 看主进程输出,docker inspect 看退出码与 OOMKilled 标记,再决定改参数还是改命令。

常见报错与原因

现象原因处理办法
端口已被占用宿主端口被其他进程或容器监听换宿主端口,或先找出占用进程再决定是否释放
容器名已被使用同名容器还存在,含已停止的容器先删掉旧容器,或换一个名字重新起
启动后立刻退出主进程执行完就结束,或启动失败看容器日志确认进程是否前台常驻
找不到镜像名称拼写错误或尚未拉取先手动拉取一次,确认镜像与标签存在
挂载目录没有权限容器内用户与宿主目录属主不匹配对齐用户编号,或放开挂载目录权限

容器存活的前提

  • 启动命令必须是前台常驻进程,像把服务注册成系统服务再退出的写法会让容器刚起就停
  • 配置挂载进容器前先确认宿主路径存在且内容正确,否则应用读到的是默认配置或空目录
  • 依赖其他服务的容器要处理启动顺序,靠重启策略兜底只是权宜之计
  • 需要持久化的目录一定要挂出来,否则容器重建后数据随可写层一起消失

易错点

  • 选项写到镜像名之后会被当成容器的命令参数,不报错但行为完全不同,排查前先确认参数位置
  • 容器名与宿主端口全局唯一,重复会直接报错;批量起服务前先规划命名与端口,避免中途改名重来
  • 用 -d 起容器不等于服务可用,主进程可能秒退,必须用 docker ps 与 docker logs 确认状态
  • 默认不设重启策略时,宿主机重启后容器不会自动起来,生产容器要显式声明重启策略

数据来源与参考

  • Docker 官方 CLI 参考:docker run(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌