无需登录 数据私有 本地保存

Docker Run 命令生成器 - 参数可视化配置

19
0
0
0

Docker Run 命令生成器

可视化配置 Docker 运行参数,一键生成并复制命令

镜像与容器
nginx mysql redis postgres node mongo
运行模式
端口映射 (-p) 主机端口:容器端口
:
卷挂载 (-v) 主机路径:容器路径
:
环境变量 (-e) KEY=VALUE
=
高级设置
生成的命令 0 字符
$ docker run -d nginx:latest
常见问题与知识点

docker run 是 Docker 中最重要的命令之一,用于从指定的镜像创建并启动一个新的容器。它是 docker createdocker start 两个操作的组合。该命令支持大量参数,可以配置容器的网络、存储、资源限制、环境变量等。基本语法为:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]。通过合理配置参数,可以满足从简单应用到复杂微服务架构的各种部署需求。

-d (--detach):后台运行模式。容器在后台运行,终端不会被阻塞,适合运行 Web 服务、数据库等长期运行的服务。使用 docker logs 查看输出。

-it (--interactive --tty):交互模式。分配一个伪终端并保持 STDIN 打开,适合需要与容器交互的场景(如进入 shell、调试)。通常组合使用 -it,例如 docker run -it ubuntu /bin/bash

注意:这两个参数通常不会同时使用,因为 -d 要求后台运行而 -it 要求前台交互。根据实际场景选择其一。

端口映射使用 -p 参数,格式为 主机端口:容器端口/协议

常见格式:
-p 8080:80 — 将主机的 8080 端口映射到容器的 80 端口(TCP)
-p 8080:80/tcp — 明确指定 TCP 协议
-p 53:53/udp — UDP 端口映射
-p 127.0.0.1:8080:80 — 绑定到特定主机 IP
-p 8080-8090:8080-8090 — 端口范围映射

使用 -P(大写)可随机映射镜像中 EXPOSE 的所有端口到主机随机端口。

绑定挂载 (Bind Mount):-v /host/path:/container/path,将主机目录挂载到容器中。适合开发环境。

命名卷 (Named Volume):-v volume_name:/container/path,使用 Docker 管理的卷,适合持久化数据。

只读挂载:-v /host/path:/container/path:ro,容器内只读。

匿名卷:-v /container/path,仅指定容器路径,Docker 自动创建匿名卷。

推荐:生产环境使用命名卷或绑定挂载配合明确路径,避免数据丢失。可使用 --mount 参数获得更清晰的语法。

--rm 参数会在容器退出后自动删除容器及其匿名卷,释放磁盘空间。

适用场景:
• 运行一次性任务(如数据库迁移、定时任务)
• 测试和调试容器
• CI/CD 流水线中的构建步骤
• 避免积累大量已停止的容器

注意:如果容器使用了命名卷或绑定挂载,这些卷不会被删除。与 -d 同时使用时,容器在后台运行结束后也会被自动清理。如果需要保留容器日志或检查退出状态,不要使用 --rm。

no:默认值,容器不会自动重启。
on-failure[:max-retries]:仅当容器以非零退出码退出时重启,可指定最大重试次数。
always:容器始终重启,无论退出码如何。Docker 守护进程启动时也会自动启动该容器。
unless-stopped:类似于 always,但如果容器被手动停止(docker stop),Docker 守护进程重启后不会自动启动它。

推荐:生产环境的 Web 服务使用 unless-stopped,批处理任务使用 on-failure

CPU 限制:
--cpus="1.5" — 限制容器最多使用 1.5 个 CPU 核心
--cpu-shares=512 — 相对权重(默认1024),仅在 CPU 竞争时生效
--cpuset-cpus="0-3" — 绑定到特定 CPU 核心

内存限制:
--memory="512m" — 最大内存使用量(支持 b, k, m, g)
--memory-swap="1g" — 总内存+交换空间限制
• 设置 --memory-swap 为与 --memory 相同的值可禁用交换

建议:生产环境始终设置资源限制,避免单个容器耗尽主机资源。

docker run:命令行方式启动单个容器,参数直接在命令中指定。适合快速测试、简单部署和一次性任务。配置散落在命令行中,不易管理和版本控制。

docker compose:使用 YAML 文件定义多容器应用,支持服务编排、网络配置、依赖管理等。配置文件可纳入版本控制,便于团队协作和持续部署。适合微服务架构和多容器应用。

建议:开发测试阶段使用本工具快速生成 docker run 命令;正式部署时考虑迁移到 docker compose 以获得更好的可维护性。

bridge(默认):容器连接到 Docker 默认的桥接网络,拥有独立 IP,通过端口映射与外界通信。
host:容器直接使用主机网络栈,性能最佳但端口可能与主机冲突。仅 Linux 支持。
none:容器没有网络接口,完全隔离。
自定义网络:--network my-network,多个容器可通过容器名互相通信,支持 DNS 解析。推荐用于多容器应用。

使用 docker network create 预先创建自定义网络可获得更好的容器间通信体验。

--privileged 赋予容器几乎全部的主机能力,包括访问所有设备、修改内核参数、加载内核模块等。

风险:
• 容器内的 root 用户实际上拥有主机的 root 权限
• 恶意程序可能逃逸容器影响主机安全
• 违反最小权限原则

替代方案:使用 --cap-add 精确添加所需的能力,如 --cap-add=NET_ADMIN。仅在确实需要时使用特权模式(如运行 Docker-in-Docker)。