如何限制(docker)容器资源?

问题描述 投票:0回答:1

假设您想确保容器使用尽可能少的资源,以便无论发生什么,都不会影响主机。

(我不在乎容器是否因为资源有限而崩溃。)

这是我已经找到的可能的

docker run
选项。 我还有额外的选择吗?
其中一些是错误的吗?

  • --memory=Xm
    X
    尽可能低,最小
    6m
  • --memory-swappiness 0
  • --cpus=X
    X
    类似于
    0.00001
    此处
    0
    的最大数量是多少?
  • --blkio-weight=X
    X
    尽可能低,最小
    10
    还是尽可能高?
  • --device-read-bps=X:0mb
    (将
    X
    作为主机上的设备(例如
    /dev/sda
    ))
  • --device-write-bps=X:0mb
    (将
    X
    作为主机上的设备(例如
    /dev/sda
    ))
  • --expose=0
  • --gpus=0
  • --oom-score-adj=X
    X
    尽可能低,最小为
    -1000
    还是应该尽可能高,最大为
    1000
  • --pids-limit=X
    X
    尽可能低,但最小为
    1
    ,以便它可以运行something
  • --read-only
  • --shm-size=Xb
    X
    尽可能低,最小
    1
  • --cap-drop=X
    (我不知道你可以在这里做什么
    X
    ...)
  • 应使用主机上的
    iptables
    来阻止网络访问,而不是使用
    docker run
    选项

(我正在跳过此列表中其他选项隐含的选项)

令人惊讶的是,我找不到任何有关网络流量的信息...
这可以用

--device-read-bps=X:0mb
--device-read-bps=X:0mb
来完成吗?
如果是这样,
X
是什么? (我的主机上似乎没有类似
/dev/eth0
的东西来代表我的网络设备)

docker security resources limit stability
1个回答
0
投票

部分答案

这只是可能选项的列表。您可以在链接的文档页面之一找到每一项的详细信息。

以下是您可以添加的一些进一步配置开关:

内存:

--memory=, -m
--memory-swap=
--memory-swappiness=
--memory-reservation=
--kernel-memory=
--oom-kill-disable

CPU:

--cpus=
--cpu-period=
--cpu-quota=
--cpuset-cpus=
--cpu-shares=

调度器:

--cap-add=sys_nice
--cpu-rt-runtime=<value>
--ulimit rtprio=<value> 

GPU:

--gpus

还有许多其他

ulimit
选项可以设置。查看
ulimit
的文档来找到它们。

可以在 Docker Compose 中配置:

# example
services:
  my-service:
    image: my-image
    cpu_period: 50000
    cpu_quota: 25000
    memory: 512m

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.