amazon-web-services - Amazon ECS 对 docker 中的 --shm-size 的支持

标签 amazon-web-services docker amazon-ec2 shared-memory amazon-ecs

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

在我的 EC2 实例上,当我执行

df -h

我看到 /dev/shm 存在并且有 3.7Gb 的可用空间。但是,如果我使用 -v/dev/shm:/dev/shm 属性将卷安装到我的 chrome-node 容器,则在我运行测试时浏览器甚至都不会出现。但是如果我挂载父 /dev 目录,测试似乎会运行几秒钟,然后我得到“无法访问浏览器异常”,因为浏览器正在关闭(我能够确认这通过 VNC 查看器)。这让我意识到通过 ECS 接口(interface)/api 挂载卷是没有帮助的。

如果我通过传递 --shm-size 属性(如

)直接启动 docker 而无需通过 ECS 路由
docker run --shm-size=2500m ....

测试运行似乎没有任何问题。

但是,ECS clearly does not support the --shm-size截至目前的属性(property)。那么如何修复或解决这个问题并仍然使用 ECS 传递 --shm-size 属性?避免使用 ECS 是这里的唯一方法还是有其他更好的方法?

最佳答案

解决方法:

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

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

我已经在 local docker 中测试了此更改,尽管它需要 --privileged 或至少 --cap-add SYS_ADMIN。我还没有在 AWS 上测试它。

关于amazon-web-services - Amazon ECS 对 docker 中的 --shm-size 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757154/

相关文章:

amazon-web-services - 无通信 - 具有不同子网中两个接口(interface)的 EC2 实例

amazon-web-services - 使用Jenkins管道无法识别aws eks命令

docker - 为什么我在 docker 容器内的多解决方案 asp.net-core 应用程序中找不到 MSBuild

java - 16-slim、16-jdk-slim、16-ea-slim docker 镜像有什么区别

regex - nginx:站点重定向期间出现 502 Bad gateway 错误

amazon-ec2 - 使用路由 53 创建 RDS cloudformation

amazon-web-services - 如何使用 Cloudformation 模板自动缩放 dynamodb 二级索引?

amazon-web-services - 共享 AWS 帐号(用于外部 ID)

python - YAML 格式不正确

docker - Docker化Windows服务