docker run核心在于理解常用参数组合逻辑:-it用于交互式Shell,-v支持绑定挂载与命名卷并注意权限,-p映射端口而--network控制网络模式,-d后台运行配合--restart实现服务高可用。

docker run 是启动容器最核心的命令,参数多、组合灵活,但掌握关键选项就能高效完成绝大多数开发与运维任务。重点不在记全所有参数,而在于理解常用组合背后的逻辑——比如什么时候加 -it,为什么 -v 要注意路径权限,--network 和 --restart 如何影响容器生命周期。
交互式运行:-it 是进入容器的前提
想像使用 SSH 一样操作容器内 Shell,必须同时指定 -i(保持 STDIN 打开)和 -t(分配伪终端)。单独用 -i 会卡住,只用 -t 则无法输入。
- 标准写法:
docker run -it ubuntu:22.04 /bin/bash - 如果镜像默认 CMD 是
/bin/bash,可省略最后命令,如docker run -it centos:8 - 退出时用
exit或Ctrl+D,容器随即停止(除非加了--detach)
挂载文件与目录:-v 参数的三种写法与权限要点
-v 支持绑定挂载(bind mount)、卷(volume)和 tmpfs,日常开发最常用的是前两种。
- 绑定挂载:
docker run -v /host/path:/container/path ubuntu—— 主机路径必须存在,且容器内进程需有对应读写权限(例如挂载/etc可能因 SELinux 或 root 用户限制失败) - 命名卷:
docker run -v mydata:/app/data ubuntu—— Docker 自动创建并管理,适合持久化数据,不依赖主机路径 - 简写形式:
-v ./config:/app/config:ro中:ro表示只读,防止容器意外修改配置
网络与端口:-p 和 --network 的分工
-p 用于将容器端口映射到宿主机,--network 决定容器接入哪个网络环境。
-
-p 8080:80表示把宿主机 8080 端口转发给容器 80 端口;-p 127.0.0.1:3306:3306限制仅本地访问 -
--network host让容器共享宿主机网络栈,不走 NAT,性能高但失去网络隔离 -
--network mybridge接入自定义桥接网络,适合多容器服务间通信(如 Web + DB 容器在同个网络里可直接用容器名互访)
后台运行与自动重启:-d 和 --restart 实际怎么用
生产环境几乎不会用 -it 启动长期服务,而是靠 -d 后台运行,并配合 --restart 应对异常中断。
-
-d启动后立即返回容器 ID,日志用docker logs <id>查看 -
--restart=always:无论退出码如何都重启(适合守护进程) -
--restart=on-failure:3:仅当非 0 退出时重启,最多 3 次(避免崩溃循环) - 注意:
--restart对docker stop无效,只响应崩溃或系统重启
参数组合没有固定模板,关键是根据目标明确“我要它做什么”:是调试代码?部署服务?还是跑一次性脚本?围绕这个目的选参数,比死记硬背更可靠。










