docker run 是 Docker 中最核心和常用的命令之一,用于从镜像创建并启动一个新的容器。
基本语法
docker run [选项] 镜像名称 [命令] [参数]
常用选项和参数
1. 基本运行选项
-
-d, --detach:后台运行容器
docker run -d nginx -
--name:为容器指定名称
docker run --name my-nginx nginx -
-it:交互式运行(通常结合 bash/sh)
docker run -it ubuntu /bin/bash -
--rm:容器退出时自动删除
docker run --rm alpine echo "hello"
2. 网络配置
-
-p, --publish:端口映射(主机端口:容器端口)
docker run -p 8080:80 nginx -
--network:指定网络模式
docker run --network host nginx
3. 资源限制
-
-m, --memory:内存限制
docker run -m 512m nginx -
--cpus:CPU 限制
docker run --cpus="1.5" nginx
4. 存储和卷
-
-v, --volume:挂载卷
docker run -v /宿主机路径:/容器路径 nginx -
--mount:更灵活的挂载方式
docker run --mount type=bind,source=/宿主机路径,target=/容器路径 nginx
5. 环境变量
-
-e, --env:设置环境变量
docker run -e MY_ENV=value nginx -
--env-file:从文件读取环境变量
docker run --env-file .env nginx
6. 容器重启策略
- --restart:重启策略
docker run --restart always nginx
实用示例
示例 1:运行并进入容器
# 运行 Ubuntu 容器并进入 bash
docker run -it ubuntu:20.04 /bin/bash
示例 2:运行 Web 服务
# 后台运行 Nginx,映射端口
docker run -d --name web-server -p 80:80 nginx
示例 3:带数据卷的数据库
# 运行 MySQL,挂载数据卷
docker run -d \
--name mysql-db \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql_data:/var/lib/mysql \
mysql:8.0
示例 4:限制资源
# 限制内存和 CPU
docker run -d \
--name limited-app \
-m 1g \
--cpus="1.0" \
--restart unless-stopped \
myapp:latest
常用工作流程
# 1. 拉取镜像(如果本地没有)
docker pull nginx:latest
# 2. 运行容器
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 3. 查看运行状态
docker ps
# 4. 查看日志
docker logs my-nginx
# 5. 进入容器
docker exec -it my-nginx /bin/bash
# 6. 停止容器
docker stop my-nginx
# 7. 删除容器
docker rm my-nginx
注意事项
- 镜像标签:建议始终指定具体版本标签,避免使用 latest
- 数据持久化:重要数据要通过卷或绑定挂载持久化
- 资源监控:生产环境要设置合理的资源限制
- 安全:避免使用特权模式(--privileged)除非必要
- 日志管理:注意日志轮转和清理策略
掌握 docker run 命令是使用 Docker 的基础,通过组合不同的选项可以满足各种容器化场景的需求。