【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=
no
,always
,unless-stopped
,on-failure
)--network=
bridge
、host
、none
、container:
)--privileged
--cpus=
--cpus=2.5
)--memory=
--memory=512m
)🚀 2. docker run
命令的完整参数详解
以下是 docker run
的所有常见参数及详细解释:
🔹 1. 容器运行模式
-d
/ --detach
-i
/ --interactive
-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=
--cpus=2
)--memory=
--memory=512m
)--memory-swap=
--oom-kill-disable
--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=
📌 示例:
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
📌 示例:
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
--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