docker run 命令介绍

8 阅读2分钟

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

注意事项

  1. 镜像标签:建议始终指定具体版本标签,避免使用 latest
  2. 数据持久化:重要数据要通过卷或绑定挂载持久化
  3. 资源监控:生产环境要设置合理的资源限制
  4. 安全:避免使用特权模式(--privileged)除非必要
  5. 日志管理:注意日志轮转和清理策略

掌握 docker run 命令是使用 Docker 的基础,通过组合不同的选项可以满足各种容器化场景的需求。