docker-run的参数含义

docker run 是用于启动 Docker 容器的命令。它有许多参数可以帮助你定制容器的行为。以下是常用的 docker run 参数和它们的作用:


基本参数

  • -d--detach
    让容器在后台运行,并返回容器 ID。

    1
    docker run -d <image_name>
  • -it
    启动容器并附加到容器的标准输入流,通常用于交互式模式。-i 使容器保持标准输入流,-t 使其分配一个伪终端。

    1
    docker run -it <image_name> /bin/bash
  • --name <container_name>
    给容器指定一个名称,方便后续操作。

    1
    docker run --name mycontainer <image_name>
  • -p <host_port>:<container_port>
    将容器的端口映射到主机端口。例如,将容器的 80 端口映射到主机的 8080 端口。

    1
    docker run -p 8080:80 <image_name>
  • -e <key>=<value>
    设置环境变量,通常用于传递配置参数给容器中的应用程序。

    1
    docker run -e TZ=Asia/Shanghai <image_name>
  • -v <host_path>:<container_path>
    挂载宿主机的文件夹或文件到容器中,进行数据共享。例如,将宿主机的 /host/data 文件夹挂载到容器的 /data 目录。

    1
    docker run -v /host/data:/data <image_name>
  • --rm
    容器停止后自动删除容器。这对于运行临时容器特别有用。

    1
    docker run --rm <image_name>

高级参数

  • -a <stream>
    将容器的输入/输出流与主机的终端连接。你可以指定 stdinstdoutstderr

    1
    docker run -a stdin -a stdout -a stderr <image_name>
  • --network <network_name>
    指定容器连接的网络,可以是 Docker 创建的网络或自定义的网络。默认情况下,容器会连接到 bridge 网络。

    1
    docker run --network host <image_name>
  • --link <container_name>
    让一个容器链接到另一个容器,通过容器名称访问对方。

    1
    docker run --link <container_name> <image_name>
  • --env-file <file>
    从一个文件加载环境变量,可以是一个 .env 文件。

    1
    docker run --env-file ./myenvfile.env <image_name>
  • --restart <policy>
    设置容器的重启策略,确保容器在某些情况下自动重启。常用的重启策略有:

    • no: 不自动重启
    • always: 无论容器退出状态如何,都重启
    • unless-stopped: 容器停止后只有在 Docker 服务重启时才重启
    • on-failure: 容器退出状态码为非零时重启
    1
    docker run --restart unless-stopped <image_name>
  • -u <user>
    以指定的用户身份运行容器中的进程。例如,使用 root 用户运行:

    1
    docker run -u root <image_name>
  • -h <hostname>
    设置容器的主机名。

    1
    docker run -h myhostname <image_name>
  • --cpu-shares <value>
    设置容器的 CPU 资源份额(相对值),允许容器使用的 CPU 资源的比例。

    1
    docker run --cpu-shares 512 <image_name>
  • --memory <limit>
    设置容器使用的最大内存限制。例如,限制内存为 512MB:

    1
    docker run --memory 512m <image_name>
  • --memory-swap <limit>
    设置容器可以使用的总内存(包括内存和交换空间)。通常与 --memory 配合使用。

    1
    docker run --memory-swap 1g <image_name>
  • --privileged
    赋予容器更多权限,通常用于需要访问硬件的应用。

    1
    docker run --privileged <image_name>

容器调试和日志

  • --log-driver <driver>
    设置日志驱动程序,用于指定日志输出格式。可以选择 json-filesyslog 等。

    1
    docker run --log-driver syslog <image_name>
  • --entrypoint <command>
    设置容器启动时的命令,替代镜像的默认命令。

    1
    docker run --entrypoint /bin/bash <image_name>

其他常用参数

  • -h--help
    查看 docker run 命令的帮助信息,列出所有支持的参数:

    1
    docker run --help
  • -p <host_port>:<container_port>
    将容器的端口映射到主机端口。这对于需要与外部网络交互的应用程序很有用。

    1
    docker run -p 8080:80 <image_name>

示例命令

  1. 运行一个后台容器并映射端口

    1
    docker run -d -p 8080:80 --name webserver nginx
  2. 运行一个容器并挂载宿主机的目录

    1
    docker run -d -v /home/user/data:/data --name mycontainer myimage
  3. 运行一个容器并设置环境变量

    1
    docker run -d -e MY_ENV=production --name myapp myapp_image
  4. 限制容器内存使用

    1
    docker run -d --memory=512m --name mycontainer myimage
  5. 给容器指定重启策略

    1
    docker run -d --restart=unless-stopped --name mycontainer myimage

总结

docker run 是启动容器时最常用的命令,提供了许多参数供你配置容器的行为。从挂载目录、设置环境变量到限制资源使用,掌握这些参数将使你能够灵活地管理和运行 Docker 容器。