【Docker系列】入门四:运行容器

374 阅读3分钟

命令

docker run -d [option] [images]

比如:

docker run -it -p 8899:8899 --name test microservice_img

-it:表示交互式终端的容器,非启动后立刻结束的容器

-p 8899 :8899 :前面为8899为docker的端口,映射到Linux虚拟机的8899 端口

--name test:给容器取个名字,嫌麻烦可以省去

资源限制

默认情况下,容器没有资源限制,所以容器可以使用宿主机内核调度程序尽可能多分配资源。如果运行的容器占用过多的主机内存导致宿主机没有足够的内存来执行重要的系统功能,它将抛出OOME,并开始随机终止运行中进程以释放内存。如果杀死错误的进程(docker或者其他重要应用程序),可能会导致整个系统瘫痪。

  • 内存限制
选项描述
-m 要么 --memory=容器可以使用的最大内存量。如果设置此选项,则允许的最小值为4m(4 MB)。
--memory-swap* =允许该容器交换到磁盘的内存量。
--kernel-memory容器可以使用的最大内核内存量。允许的最小值是4m。由于无法交换内核内存,因此内核内存不足的容器可能会阻塞主机资源,这可能会对主机和其他容器产生副作用。查看--kernel-memory详细信息。
--oom-kill-disable默认情况下,如果发生内存不足(OOM)错误,则内核将终止容器中的进程。要更改此行为,请使用该--oom-kill-disable选项。仅在还设置了该-m/--memory选项的容器上禁用OOM杀手。如果-m未设置该标志,则主机可能会用完内存,内核可能需要终止主机系统的进程以释放内存。
  • cpu限制
选项描述
--cpus=指定一个容器可以使用多少可用的CPU资源。例如,如果主机有两个CPU,并且您设置了--cpus="1.5",则可以保证容器最多容纳一半的CPU。这相当于设置--cpu-period="100000"和--cpu-quota="150000"。
--cpu-period=指定CPU CFS调度程序周期,该周期与一起使用 --cpu-quota。默认为100微秒。大多数用户不会更改默认设置。如果您使用Docker 1.13或更高版本,请--cpus改用。
--cpu-quota=在容器上设置CPU CFS配额。--cpu-period节流之前,容器被限制为每微秒数。这样就充当了有效的上限。
--cpuset-cpus限制容器可以使用的特定CPU或内核。如果一个或多个CPU,则容器可以使用逗号分隔的列表或用连字符分隔的CPU范围。第一个CPU编号为0。有效值可能是0-3(使用第一,第二,第三和第四CPU)或1,3(使用第二和第四CPU)。
--cpu-shares将此标志设置为大于或小于默认值1024的值,以增加或减少容器的重量,并允许其访问主机的CPU周期的更大或更小比例。仅在限制CPU周期时才执行此操作。当有足够的CPU周期可用时,所有容器都会根据需要使用尽可能多的CPU。这样,这是一个软限制。--cpu-shares不会阻止以群集模式调度容器。它将容器CPU资源的优先级分配给可用的CPU周期。它不保证或保留任何特定的CPU访问权限。

比如:

docker run -it --cpus=".5" ubuntu /bin/bash