Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 图像能否具有自定义的默认shm大小?_Docker - Fatal编程技术网

Docker 图像能否具有自定义的默认shm大小?

Docker 图像能否具有自定义的默认shm大小?,docker,Docker,我有一个容器,它必须使用大于默认64Mb的/dev/shm运行。它可以这样运行: docker run --shm-size=1G my-container 虽然每次都要提供“shm size”参数很不方便,但对于不熟悉容器的人来说,很容易错过。如果容器本身可以有一个自定义的默认shm大小就好了。这可能吗?不可能。我认为不应该因为以下原因: 很多其他的选择也应该考虑进去。但是代码越少越好 此选项是特定于系统的。我不知道Windows容器是否有这个分区 docker客户端是runc(这是doc

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

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

虽然每次都要提供“shm size”参数很不方便,但对于不熟悉容器的人来说,很容易错过。如果容器本身可以有一个自定义的默认shm大小就好了。这可能吗?

不可能。我认为不应该因为以下原因:

  • 很多其他的选择也应该考虑进去。但是代码越少越好
  • 此选项是特定于系统的。我不知道Windows容器是否有这个分区
  • docker客户端是runc(这是docker参与的开放式容器计划的客户端容器)

但是,您可以做的是在entrypoint脚本中检查/dev/shm分区的大小,并大声拒绝运行。

Q:图像可以有自定义的默认shm大小吗

A:简短回答,

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

Q: 虽然每次都要提供“shm size”参数很不方便,但对于不熟悉容器的人来说,很容易错过

A:我看到你的问题了

也许你可以使用
码头工人标签
。在您的
docker图像中添加一个键值对标签,如
shm size=1G

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

码头工人标签:

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


从docker 17.04开始,您可以使用--default shm size选项。但它当然会产生全球影响