假设您想确保容器使用尽可能少的资源,以便无论发生什么,都不会影响主机。
(我不在乎容器是否因为资源有限而崩溃。)
这是我已经找到的可能的
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
的东西来代表我的网络设备)
这只是可能选项的列表。您可以在链接的文档页面之一找到每一项的详细信息。
以下是您可以添加的一些进一步配置开关:
内存:
--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