一个图像可以有一个自定义的默认shm大小?

我有一个容器,必须运行一个/ dev / shm大于默认的64Mb。 它可以像这样运行它:

docker run --shm-size=1G my-container 

虽然每次都必须提供“大小不一”的说法,但是对于不熟悉容器的人却很容易被忽略。 如果容器本身可以有一个自定义的默认shm大小将是很好的。 这可能吗?

问:图像是否可以具有自定义的默认尺寸?

答:简短的回答,

这是不可能的,因为您只能在运行时打开共享内存。

问:虽然每次都要提供“大小不一”的说法是不方便的,但对于不熟悉容器的人来说很容易被忽略。

A:我看到你的问题了。

也许你可以使用docker-labels 。 添加一个键值对标签像shm-size=1G到您的docker images

然后创build一个简单的脚本来执行docker inspect ,从图像中读取键值对,然后执行通常的docker run --shm-size=read_value

docker标签:

LABEL指令将元数据添加到图像。 LABEL是一个键值对。 要在LABEL值中包含空格,请像在命令行parsing中一样使用引号和反斜杠。 几个用法示例:

参见

https://docs.docker.com/engine/reference/builder/#label

不,我认为这不应该是由于这些原因:

  • 也应该烘烤很多其他的选项。 但是代码越less越好。
  • 该选项是系统特定的。 我不知道Windows容器是否有这个分区。
  • docker客户端是runc (这是Docker正在贡献的Open Container Initiative的客户端容器)。

但是,您可以执行的操作是在入口点脚本中检查/ dev / shm分区的大小,并大声拒绝运行。

从docker 17.04开始,你可以使用–default-shm-size选项。 但当然这会产生全球效应

https://github.com/moby/moby/blob/master/CHANGELOG.md#17040-ce-2017-04-05