从镜像创建容器命令:
docker run启动一个新容器的核心命令,参数覆盖容器生命周期的基础配置。
常用参数
| 参数 | 说明 | 示例 |
|---|---|---|
-d (--detach) | 后台运行容器 | docker run -d nginx |
--name | 指定容器名称 | docker run --name [容器名称] nginx |
-p (--publish) | 端口映射(主机端口:容器端口) | docker run -p 8080:80 nginx |
-v (--volume) | 挂载数据卷(主机路径:容器路径) | docker run -v /data:/app/data nginx |
-e (--env) | 设置环境变量 | docker run -e "ENV=prod" nginx |
--env-file | 从文件加载环境变量 | docker run --env-file .env nginx |
--rm | 容器退出后自动删除 | docker run --rm alpine echo "hello" |
-it | 交互模式(分配伪终端并保持 STDIN 打开) | docker run -it ubuntu bash |
--network | 指定容器网络 | docker run --network=[网络名] nginx |
--link | 连接其他容器(旧版网络,推荐使用自定义网络替代) | docker run --link redis:redis app |
--entrypoint | 覆盖默认入口命令 | docker run --entrypoint /bin/bash nginx |
重启策略(--restart)
| 参数值 | 说明 | 示例 |
|---|---|---|
no | 不自动重启(默认) | --restart=no |
on-failure | 仅在退出状态码非 0 时重启(即出错时)。可加次数限制,如 on-failure:3 | --restart=on-failure:5 |
always | 无条件总是重启,即使手动停止,在 Docker 守护进程重启后也会启动 | --restart=always |
unless-stopped | 总是重启,但尊重手动停止。若容器被手动停止,则 Docker 重启后不会自动启动它 | --restart=unless-stopped |
关键点:所有策略仅在容器成功运行至少 10 秒后生效,防止启动失败无限循环
日志与调试参数
| 参数 | 说明 | 示例 |
|---|---|---|
--log-driver | 指定日志驱动(json-file, syslog, none 等) | docker run --log-driver=json-file nginx |
--log-opt | 日志驱动选项(如 max-size, max-file) | docker run --log-opt max-size=10m nginx |
-t (--tty) | 分配伪终端(常用于交互式命令) | docker run -it ubuntu bash |
安全与权限参数
| 参数 | 说明 | 示例 |
|---|---|---|
--user | 指定容器内用户(UID 或用户名) | docker run --user 1000 nginx |
--cap-add | 添加 Linux 权限(如 SYS_ADMIN) | docker run --cap-add SYS_ADMIN alpine |
--cap-drop | 移除 Linux 权限 | docker run --cap-drop CHOWN alpine |
--security-opt | 安全选项(如 seccomp=unconfined) | docker run --security-opt seccomp=unconfined alpine |
资源限制参数
| 参数 | 说明 | 示例 |
|---|---|---|
--memory (-m) | 限制内存(支持 m, g) | docker run -m 512m nginx |
--memory-swap | 内存 + Swap 总限制 | docker run -m 512m --memory-swap=1g nginx |
--cpus | 限制 CPU 核数 | docker run --cpus=2 nginx |
--cpu-shares(-c) | CPU 权重(默认 1024) | docker run --cpu-shares=512 nginx |
其中-m参数是对容器的物理内存的使用限制,而--memory-swap是对内存和交换分区总和的限制,它们默认都是-1,也就是说没有任何的限制(如果在一开始仅指定-m参数,那么交换内存的限制与其保持一致,内存+交换等于-m的两倍大小)默认情况下跟宿主主机一样
更改容器启动参数
更改容器启动参数之前需要停止容器运行
sh
docker stop [容器名\ID]使用 ps 命令查看要更改容器的ID
sh
docker ps -a获取到需要修改的容器ID后输入一下命令进入文件夹
sh
cd /var/lib/docker/containers/[容器ID]找到并编辑一个名为 config.v2.json 的文件,文件中存放为容器的启动参数
说明:如果想要让修改的参数生效则需要重启一下Docker
shsystemctl restart docker如果不重启Docker的话那么修改的参数会被复原成原来的
