如何把 Docker 镜像运行成容器?
docker run 镜像名:标签 即从镜像创建并启动容器;常用参数:-it 交互、-d 后台、--name 命名、-p 端口、-v 挂载、-e 环境变量。本文给出入门到常用的完整说明。
最简命令: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 8080:80 \ # 宿主8080 → 容器80
-v app-data:/data \ # 挂卷持久化
-e MODE=prod \ # 环境变量
myimage:1.2 # 镜像
# (可选)覆盖默认命令: command args...
三种典型形态
# 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 # 停止
镜像不在本地时 docker run 会自动从仓库拉取(相当于先 docker pull)。
观测云对照
容器一起,采集即通。 新容器上线后 DataKit 自动发现并开始采集 stdout 日志与资源指标,无需逐容器配置;服务可观测性从第一秒就建立。
常见问题(FAQ)
Q:run 的时候报找不到镜像?
A:先 docker images 确认在本地;不在会自动 pull,pull 失败检查镜像名拼写、仓库登录状态与网络。
Q:每次 run 都创建新容器?
A:对。重复运行会攒下一堆停止的同名容器,所以调试建议 --rm(退出自删)或 --name + 先删旧容器。
Q:容器一启动就退出?
A:主进程退出了——看 docker logs 容器名;调试命令类容器记得给前台命令(如 bash/sleep)。