> 技术文档 > 【Docker】创建并运行容器:docker run 命令及所有参数详解

【Docker】创建并运行容器:docker run 命令及所有参数详解


📌 docker run 命令及所有参数详解

docker run 命令用于基于某个 Docker 镜像 创建并运行一个 容器。以下是完整的 docker run 语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中:

  • IMAGE:指定镜像名称(如 nginx:latest)。
  • COMMAND:指定运行的命令(如 bash)。
  • ARG:传递给 COMMAND 的参数。

🚀 1. docker run 常用参数

选项 说明 -d / --detach后台模式运行容器(不占用终端) -it 交互模式(-i 保持 STDIN,-t 分配终端) --rm 容器退出后自动删除 --name 指定容器的名称 -p : 端口映射(如 -p 8080:80-v : 数据卷挂载(如 -v /data:/app-e 设置环境变量(如 -e ENV=prod--restart= 容器重启策略(noalwaysunless-stoppedon-failure--network= 指定网络模式(bridgehostnonecontainer:--privileged特权模式运行,允许访问宿主机设备 --cpus= 限制 CPU 核心数(如 --cpus=2.5--memory= 限制容器内存使用(如 --memory=512m

🚀 2. docker run 命令的完整参数详解

以下是 docker run 的所有常见参数及详细解释:

🔹 1. 容器运行模式

选项 说明 -d / --detach后台模式运行容器(不会占用当前终端) -i / --interactive 让容器保持标准输入 (STDIN) 打开 -t / --tty 分配一个伪终端(通常与 -i 结合使用) --rm 容器退出后自动删除(适用于临时任务) --name 指定容器的名称 -a / --attach 连接到已运行的容器的 STDIN, STDOUT, STDERR

📌 示例

docker run -it --rm ubuntu bash # 交互模式运行 Ubuntu,退出后自动删除容器docker run -d --name myapp nginx # 后台运行 nginx 容器

🔹 2. 端口映射

选项 说明 -p : 端口映射(如 -p 8080:80-P / --publish-all 自动随机分配端口

📌 示例

docker run -d -p 8080:80 nginx # 访问 http://localhost:8080

🔹 3. 数据卷挂载

选项 说明 -v : 挂载目录(如 -v /data:/app--mount type=bind,source=,target= 推荐的挂载方式 --tmpfs 内存中创建临时文件存储 --read-only只读模式运行容器

📌 示例

docker run -it -v /home/user/data:/app ubuntu bash # 容器内 /app 目录映射到宿主机 /home/user/data

🔹 4. 资源限制

选项 说明 --cpus= 限制 CPU 核心数(如 --cpus=2--memory= 限制容器的最大内存(如 --memory=512m--memory-swap= 限制 Swap 交换空间 --oom-kill-disable 禁用 OOM(内存溢出终止) --device=: 允许容器访问宿主机设备

📌 示例

docker run -d --cpus=2 --memory=512m nginx # 限制 nginx 运行时使用 2 核 CPU 和 512MB 内存

🔹 5. 环境变量

选项 说明 -e = 传递环境变量 --env-file 从文件加载环境变量

📌 示例

docker run -d -e ENV=production -e PORT=8080 myapp

🔹 6. 网络配置

选项 说明 --network=bridge 默认网络模式(容器之间隔离) --network=host 共享宿主机网络(无端口映射) --network=none 无网络模式 --network= 使用自定义网络 --ip= 指定容器 IP 地址(仅适用于自定义网络)

📌 示例

docker run -d --network=host nginx # 让容器使用宿主机网络

🔹 7. 重启策略

选项 说明 --restart=no 默认,不自动重启 --restart=always 始终自动重启 --restart=unless-stopped 除非手动停止,否则自动重启 --restart=on-failure[:次数] 失败时自动重启(可限制次数)

📌 示例

docker run -d --restart=always nginx # 永久运行 nginx

🔹 8. 容器权限

选项 说明 --privileged 特权模式(容器可访问所有设备) --cap-add= 添加特定权限 --cap-drop= 去除特定权限 --security-opt seccomp=unconfined 取消 seccomp 保护

📌 示例

docker run -d --privileged myapp # 允许容器访问所有宿主机资源docker run -d --cap-add=NET_ADMIN myapp # 仅允许修改网络配置

🔹 9. 指定用户

选项 说明 -u 指定运行容器的用户 --group-add 指定附加用户组

📌 示例

docker run -it -u 1000:1000 ubuntu bash # 以 UID=1000, GID=1000 运行容器

📌 10. docker run 经典示例

1️⃣ 运行 Nginx

docker run -d --name mynginx -p 8080:80 nginx

2️⃣ 运行 MySQL

docker run -d --name mysql-server \\ -e MYSQL_ROOT_PASSWORD=123456 \\ -v /data/mysql:/var/lib/mysql \\ -p 3306:3306 \\ mysql:latest

3️⃣ 运行 Python 应用

docker run -it --rm -v $(pwd):/app python:3.9 bash

4️⃣ 运行 Redis 并限制资源

docker run -d --name myredis \\ --memory=512m --cpus=2 \\ -p 6379:6379 redis

📌 11. 总结

选项 说明 -d 后台运行 -it 交互模式 -p 8080:80 端口映射 -v /data:/app 挂载数据卷 --memory=512m 限制内存 --cpus=2 限制 CPU --network=host 使用宿主机网络 --restart=always 自动重启

🚀 3. docker run 使用示例合集

# 后台运行 Nginxdocker run -d --name mynginx -p 8080:80 nginx# 交互模式运行 Ubuntu,并在退出时删除容器docker run -it --rm ubuntu bash# 运行 MySQL 并设置密码docker run -d --name mysql-server -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql# 限制 CPU 和内存的 Redis 容器docker run -d --name myredis --memory=512m --cpus=2 -p 6379:6379 redis# 运行 Python 并挂载当前目录docker run -it --rm -v $(pwd):/app python:3.9 bash# 运行 BusyBox 并加入已有容器网络docker run -it --network=container:mycontainer busybox sh