Docker 创建容器的常用参数整理(docker run

以下是 Docker 创建容器时常用的参数分类及说明,涵盖基础操作、资源控制、网络、存储等核心功能。


一、容器运行模式

参数说明示例
-d, --detach后台运行容器docker run -d --name my_container nginx
--name指定容器名称docker run --name my_app -d myapp:latest
--rm容器退出后自动删除docker run --rm alpine echo "Hello"
--restart设置容器重启策略docker run --restart unless-stopped myapp
-it交互式终端(分配 TTY 并保持 STDIN 打开)docker run -it ubuntu bash

重启策略说明

  • no:默认,不自动重启。
  • on-failure[:max-retries]:失败时重启(可指定最大重试次数)。
  • always:总是重启(包括宿主机重启)。
  • unless-stopped:总是重启,除非手动停止。

二、镜像与构建

参数说明示例
--build-arg构建时传递 ARG 参数(仅用于 docker builddocker build --build-arg HTTP_PROXY=http://10.10.0.1 .
--label, -l为容器添加元数据标签docker run -l "env=production" myapp
--platform指定目标架构(如多架构镜像)docker run --platform linux/arm64 myapp

三、资源限制

参数说明示例
-m, --memory限制内存使用docker run -m 512m myapp
--memory-swap限制内存 + Swap 总量(需配合 -mdocker run -m 512m --memory-swap 1g myapp
--cpus限制 CPU 使用(如 1.5 个 CPU)docker run --cpus 1.5 myapp
--cpu-shares设置 CPU 权重(相对优先级)docker run --cpu-shares 512 myapp
--blkio-weight限制磁盘 IO 权重(范围 10-1000)docker run --blkio-weight 300 myapp

四、网络配置

参数说明示例
--network指定网络模式(host/bridge/none/custom)docker run --network host myapp
--network-alias为容器在自定义网络中设置别名docker run --network mynet --network-alias db mysql
--ip在自定义网络中指定静态 IPdocker run --network mynet --ip 192.168.1.10 myapp
-p, --publish映射容器端口到宿主机docker run -p 8080:80 myapp
-P, --publish-all随机映射所有暴露端口docker run -P myapp

网络模式说明

  • host:共享宿主机网络(无隔离)。
  • bridge:默认桥接网络。
  • none:无网络。
  • container:<name|id>:共享其他容器的网络。

五、存储卷挂载

参数说明示例
-v, --volume挂载宿主机目录/文件到容器docker run -v /host/data:/container/data myapp
--mount更灵活的挂载方式(支持类型、只读等)docker run --mount type=bind,source=/host/data,target=/container/data,readonly myapp
--tmpfs挂载临时内存文件系统docker run --tmpfs /run:size=100m myapp
--volumes-from从其他容器挂载卷docker run --volumes-from db_container myapp

卷类型说明

  • bind:绑定挂载(宿主机路径到容器路径)。
  • volume:命名卷(Docker 管理的持久化存储)。
  • tmpfs:内存文件系统(重启后丢失)。

六、安全与权限

参数说明示例
--cap-add添加 Linux Capabilitiesdocker run --cap-add=NET_ADMIN myapp
--cap-drop移除 Capabilitiesdocker run --cap-drop=CHOWN myapp
--privileged赋予容器所有权限(慎用)docker run --privileged myapp
--read-only以只读模式运行容器docker run --read-only myapp
--user, -u指定运行容器的用户docker run -u 1000:1000 myapp

七、环境与变量

参数说明示例
-e, --env设置环境变量docker run -e "ENV1=value1" myapp
--env-file从文件加载环境变量docker run --env-file .env myapp
--hostname, -h设置容器主机名docker run -h myhost myapp

八、日志与调试

参数说明示例
--log-driver指定日志驱动(如 json-file/syslog)docker run --log-driver syslog myapp
--log-opt配置日志驱动选项docker run --log-opt max-size=10m myapp
--entrypoint覆盖镜像的 ENTRYPOINTdocker run --entrypoint "/custom-entry.sh" myapp
CMD覆盖镜像的 CMD 命令docker run myapp "custom-command"

九、其他常用参数

参数说明示例
--add-host添加自定义 DNS 主机docker run --add-host host.docker.internal:host-gateway myapp
--shm-size设置共享内存大小docker run --shm-size 512m myapp
--ulimit设置 ulimit 限制docker run --ulimit nofile=1024:2048 myapp
--health-cmd设置健康检查命令docker run --health-cmd "curl -f http://localhost/health" myapp
--stop-signal指定容器停止信号(如 SIGINT)docker run --stop-signal SIGINT myapp

完整示例

docker run -d \
  --name myapp \
  -p 8080:80 \
  -v /host/data:/app/data \
  -e "ENV1=value1" \
  --restart unless-stopped \
  --network my_custom_network \
  --ip 192.168.1.10 \
  myapp:latest

总结

分类推荐参数
基础运行-d, --name, --restart unless-stopped
网络--network, --ip(自定义网络)
存储-v--mount(命名卷更推荐)
资源限制-m, --cpus
安全--read-only, --cap-drop, --user
调试--entrypoint, --log-driver

最佳实践建议

  1. 使用自定义网络(如 my_custom_network)实现固定 IP 和容器间通信。
  2. 使用命名卷(Named Volume)替代绑定挂载,提升可移植性。
  3. 生产环境启用 --restart unless-stopped 确保服务自动恢复。
  4. 限制资源(CPU/内存)避免资源耗尽。
  5. 使用 --read-only 和 Capabilities 控制容器权限,增强安全性。

如需更详细参数说明,可参考官方文档:Docker Run Reference

每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2025 年 05 月 01 日
如果觉得我的文章对你有用,请随意赞赏