Amazon ECS支持docker中的--shm-size

Pra*_*nna 6 amazon-ec2 shared-memory amazon-web-services amazon-ecs docker

我正在尝试使用AWS EC2容器服务(ECS)来运行dockerized webdriver(Selenium)Grid.根据docker-selenium github页面,如果我们想要使用selenium-node-chrome图像上的chrome浏览器运行长时间运行的测试,我们需要添加一些shared memory或者mount a volume到docker容器.

在我的EC2实例上,当我做的时候

df -h
Run Code Online (Sandbox Code Playgroud)

我看到/dev/shm存在并且存在3.7Gb of available free space.但是如果我使用该-v /dev/shm:/dev/shm属性将卷挂载到我的chrome节点容器,那么当我运行测试时,浏览器甚至不会出现.但是,如果我挂载父/dev目录,测试似乎运行了几秒钟,然后我得到"无法达到浏览器异常",因为浏览器然后关闭(我能够通过VNC查看器确认).这让我意识到通过ECS接口/ api安装卷不会有帮助.

如果我通过传递--shm-size属性就直接启动docker而不通过ECS路由

docker run --shm-size=2500m ....
Run Code Online (Sandbox Code Playgroud)

测试似乎毫无困难地运行.

但是,ECS显然不支持该--shm-size物业.那么如何修复或解决这个问题仍然使用ECS来传递--shm-size属性?在这里避免使用ECS是唯一的方法还是有其他更好的方法?

use*_*177 0

解决方法:

添加以下 (EntryPoint) 命令作为 dockerfile 中的最后一行

ENTRYPOINT shm_dir=/dev/shm;umount $shm_dir;mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=*<size eg. 500m,1Gb>* shm $shm_dir  && /bin/bash
Run Code Online (Sandbox Code Playgroud)

我已经在本地 docker中测试了这一更改,尽管它需要--privileged或至少是--cap-add SYS_ADMIN. 我还没有在 AWS 上测试过。