-d
选项或者 -d=true
使得容器后台运行:docker attach
命令重新连接后台容器。attach
可以理解为在当前终端,连接到后台运行的容器,等同前台操作运行容器。--rm
: 选项表示容器停止后,自动清理容器,方便调试情况下使用,不能和 -d
选项同时执行-it
: -i
、-t
选项一般同时执行,用于和容器交互操作,比较常用Ctrl-D
or exit
Ctrl-P
+ Ctrl-Q
docker attach <container_id>
-1
表示不限制 swap-1
)-m, --memory string
,--memory-swap string
--memory
限制,默认情况下,总虚拟内存大小 (--memory-swap
) 会设置成内存的两倍,即内存和 swap 之和 2*300M。意味着这个容器可以使用 300M 的内存以及 300M 的 swap。--memory-swap
是内存和 swap 之和,此例中容器内存限制为 300M,容器 swap 限制大小为 700M。docker stats <container_id>
命令可以查看容器运行的资源占用状态,其中内存只显示 --memory
设定,swap 占用不会显示。--memory-reservation string
--memory-reservation
内存预留选项用于设置内存的软限制,在正常情况下,容器可以根据需要使用尽可能多的内存,并且仅受限于使用 --memory
选项设置的硬限制。Docker 会检测内存抢占或内存不足,在这种情况下,Docker 会强制容器将其消耗限制在预留限制内。--memory-reservation
设定值要低于 --memory
,否则 --memory
优先。--memory-swappiness int
/proc/sys/vm/swappiness
设定:--memory-swappiness=0
表示禁用容器 swap 功能。这点不同于宿主机,宿主机 swappiness 即使设置为 0 也不保证 swap 不会被使用。默认情况下,该值继承父进程设置。--oom-kill-disable
,--oom-score-adj int
--oom-kill-disable
选项就比较 危险 了:-c
or --cpu-shares
-c
或者 --cpu-shares
可以设置 CPU 利用率权重,默认为 1024,可以设置权重为 2 或者更高(单个 CPU 为 1024,两个为 2048,以此类推)。如果设置选项为 0,则系统会忽略该选项并且使用默认值 1024。通过以上设置,只会在 CPU 密集(繁忙)型运行进程时体现出来。当一个 container 空闲时,其它容器都是可以占用 CPU 的。cpu-shares 值为一个相对值,实际 CPU 利用率则取决于系统上运行容器的数量。--cpu-period
& --cpu-quota
--cpu-period
值限制容器的 CPU 使用。一般 --cpu-period
配合 --cpu-quota
一起使用。--cpus=0.5
来达到和以上相同的效果,即一个 CFS 时段容器最多占用 50%:--cpuset-cpus
、--cpuset-mems
--cpuset-cpus
可以设置容器绑定指定 CPU:--blkio-weight
、--blkio-weight-device
--blkio-weight
修改容器 blkio 权重。--blkio-weight
权重值在 10 ~ 1000 之间。值越大,优先级越高。CFQ
,否则基本没什么效果:--blkio-weight-device="<DEVICE_NAME>:<WEIGHT>"
可以指定某个设备的权重大小,如果同时指定 --blkio-weight
则以 --blkio-weight
为全局默认配置,针对指定设备以 --blkio-weight-device
指定设备值为主。--device-read-bps
、--device-write-bps
--privileged
选项启用超级权限,否则无法操作 /proc/sys/vm/drop_caches
文件清空缓存。--device-read-iops
、--device-write-iops
privileged
权限是很不安全的一种做法,所以 Docker 通过一些选项来实现操作访问相关设备而不需要赋予容器 privileged
。--device
可以指定访问某个设备:read
、write
、mknod
操作,也可以自定义相关操作:--cap-add
、--cap-drop
--cap-add
、--cap-drop
选项可以在没有 privileged
情况下,做一些精细化的控制操作。具体的功能列表,可以参见官档 Runtime privilege and Linux capabilities。docker run
配合 --log-driver=<VALUE>
设置容器的日志驱动。当前支持以下日志驱动:docker logs
在该驱动下不能使用。docker run
的时候指定相关选项覆盖 Dockerfile 默认值或追加一些配置项,当前支持以下选项:ENTRYPOINT
,那么 CMD
或者 COMMAND
作为选项追加给 ENTRYPOINT
。--entrypoint
选项可以覆盖镜像中原有的 ENTRYPOINT
选项。该选项会清除原有镜像中的任何命令集。--expose
、-P
或者 -p
选项指定端口暴露。-e
选项可以指定容器运行环境变量: