如何把 Docker 镜像运行成容器?

docker run 镜像名:标签 即从镜像创建并启动容器;常用参数:-it 交互、-d 后台、--name 命名、-p 端口、-v 挂载、-e 环境变量。本文给出入门到常用的完整说明。

最佳实践
如何把 Docker 镜像运行成容器?封面

最简命令:docker run <镜像名:标签>——从镜像创建一个容器并启动。先 docker images 确认本地有哪些镜像(REPOSITORY:TAG 或 ID),然后按需加参数:-it 交互终端、-d 后台、--name 起名、-p 映射端口、-v 挂目录、-e 传环境变量。

从 images 到 run

docker images
# REPOSITORY     TAG      ID           ...
# ubuntu         22.04    8dbd9e392a96 ...

# 按名称:标签运行(交互进 bash)
docker run -it ubuntu:22.04 /bin/bash

# 按镜像 ID 运行(等价)
docker run -it 8dbd9e392a96 /bin/bash

常用参数组合

# 后台运行,命名并设置重启策略;端口仅绑定本机回环地址
docker run -d \
  --name myapp \
  --restart unless-stopped \
  -p 127.0.0.1:8080:80 \
  -v app-data:/data \
  -e MODE=prod \
  myimage:1.2

端口映射省略主机地址时通常绑定所有主机接口;按实际访问范围选择。镜像后的命令会替换 CMD,但不会自动清除 ENTRYPOINT;需要更换入口时使用 --entrypoint。命名卷的数据生命周期独立于容器。

三种典型形态

# 1. 交互式试用(退出即删)
docker run -it --rm ubuntu:22.04 bash

# 2. 后台服务
docker run -d --name web -p 80:80 nginx

# 3. 一次性任务(跑完自动删)
docker run --rm myimage python etl.py

运行之后

docker ps                 # 看运行状态
docker logs -f myapp      # 看输出
docker exec -it myapp sh  # 进去排查
docker stop myapp         # 停止

默认 --pull=missing 时,镜像不在本地才尝试拉取;--pull=always 每次先拉取,--pull=never 不拉取。

常见问题(FAQ)

Q:run 的时候报找不到镜像?
A:先确认本地镜像完整引用与 pull 策略;需要拉取却失败时,检查名称、仓库权限与网络。

Q:每次 run 都创建新容器?
A:对。未指定名称时会创建不同名称的容器;重复使用同一个 --name 会报名称冲突,不会生成多个同名容器。继续使用已有容器用 docker start;删除旧容器前先确认可写层数据,调试的一次性容器可用 --rm。

Q:容器一启动就退出?
A:主进程退出了——看 docker logs 容器名;调试命令类容器记得给前台命令(如 bash/sleep)。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台