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 build ) | docker 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 总量(需配合 -m ) | docker 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 | 在自定义网络中指定静态 IP | docker 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 Capabilities | docker run --cap-add=NET_ADMIN myapp |
--cap-drop | 移除 Capabilities | docker 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 | 覆盖镜像的 ENTRYPOINT | docker 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 |
最佳实践建议:
- 使用自定义网络(如
my_custom_network
)实现固定 IP 和容器间通信。 - 使用命名卷(Named Volume)替代绑定挂载,提升可移植性。
- 生产环境启用
--restart unless-stopped
确保服务自动恢复。 - 限制资源(CPU/内存)避免资源耗尽。
- 使用
--read-only
和 Capabilities 控制容器权限,增强安全性。
如需更详细参数说明,可参考官方文档:Docker Run Reference