在swarm环境中的docker容器中增加/dev/shm(docker stack deploy)

Gon*_*Cao 9 postgresql docker swarm docker-compose

我知道可以通过 docker run 或 docker compose 在 docker 容器中增加默认的 64MB /dev/shm。例如,这适用于我们的本地开发机器。

version: '3.5'
services:
  postgres:
    image: postgres
    shm_size: '1gb'
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在我们的 swarm docker stack deploy stack_name -c docker-compose.yml 中执行此操作时,我收到“忽略不支持的选项:shm_size”并且 shm 挂载仍为默认 64MB。

我能做什么?我试图用这个参数创建一个图像,但它似乎不是我可以添加到图像中的东西,更像是一个运行时选项。创建容器后可以修改它吗?

环境是 Ubuntu 16.04 和 docker 17.12 在单节点群中。

l0b*_*0b0 6

您需要使用更新版本的 Docker Compose。最新版本(docker-compose version 1.24.0,build 0aa5906)当然支持它。

上面的答案是假设 Docker Compose,但docker swarm根本不是一回事。配置文件中docker swarm尚不支持shm_size,但似乎有解决方法。


Ton*_* Qu 6

您可以在 docker-compose.yml 中添加以下代码。它将直接添加一个针对 /dev/shm 的 tmpfs 卷:

volumes:
      - type: tmpfs
        target: /dev/shm
        tmpfs:
           size: 4096000000 # (this means 4GB)
Run Code Online (Sandbox Code Playgroud)