使用docker run快速启动一个长期后台运行的容器测试环境

当容器中没有活动的进程时, 容器就会停止, 不便于测试容器环境, 为了解决这个问题, 有两种解决方案

方案1 启动一个交互式终端

docker run -it jre_8u422-dbg:latest /bin/bash

方案2 运行一个持续运行的命令

1
2
3
4
5
6
docker run -d \
--name your_container_name \
--network your_network_name \
-v /home:/home \
jre_8u422-dbg:latest \
tail -f /dev/null

额外的容器启动、配置和测试用指令

以下是docker run中可已添加的额外的容器启动、配置和测试用指令

  1. 基础运行参数

    1
    2
    3
    4
    5
    -d, --detach          # 后台运行容器
    -i, --interactive # 交互模式, 保持输入流开放
    -t, --tty # 分配一个伪终端, 通常-it一起使用, 如 docker exec -it ubuntu bash
    --name string # 指定容器名称
    --rm # 容器停止后自动删除, 适用于临时容器, 避免手动清理
  2. 网络相关

    1
    2
    3
    4
    5
    -p, --publish        # 端口映射, 格式: 主机端口:容器端口
    --network # 连接到指定网络
    --dns # 设置DNS服务器
    --hostname # 设置容器主机名
    --add-host # 添加自定义/etc/hosts映射, 如 myhost:127.0.0.1
  3. 资源限制

    1
    2
    3
    4
    -m, --memory        # 内存限制, 例如-m 500M
    --memory-swap # 内存+交换空间限制
    --cpus # CPU核心数限制, 例如--cpus=2
    --cpu-shares # CPU共享权重
  4. 存储相关

    1
    2
    3
    -v, --volume        # 挂载卷, 格式: 主机路径:容器路径[:权限]
    --volumes-from # 从其他容器挂载卷
    --mount # 挂载, 更详细的方式, 格式: type=<类型>,source=<主机路径>,target=<容器路径>
  5. 环境和配置

    1
    2
    3
    4
    -e, --env          # 设置环境变量, 例如-e MYSQL_ROOT_PASSWORD=123456
    --env-file # 从文件加载环境变量
    -w, --workdir # 设置容器内工作目录
    --entrypoint # 覆盖默认的ENTRYPOINT
  6. 重启策略

    1
    2
    3
    4
    5
    --restart         # 重启策略
    # no默认策略, 不重启
    # always总是重启
    # unless-stopped除非手动停止, 否则总是重启
    # on-failure[:max-retries]失败时重启
  7. 日志相关

    1
    2
    --log-driver      # 设置日志驱动
    --log-opt # 日志驱动的选项
  8. 用户和权限

    1
    2
    -u, --user        # 指定用户, 例如-u 1000:1000
    --privileged # 给予容器扩展权限
  9. 健康检查

    1
    2
    3
    --health-cmd      # 健康检查命令
    --health-interval # 检查间隔
    --health-timeout # 检查超时时间

实际使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d \
--name myapp \
--restart always \
-p 80:80 \
-p 443:443 \
-v /data:/data:rw \
-e ENV=prod \
--cpus 2 \
-m 2G \
--network my-network \
--log-driver json-file \
--log-opt max-size=10m \
nginx:latest

更多参数可以通过 docker run --help 查看完整列表