如何使用 Amazon Linux 2、单容器、无 Docker Compose 在 AWS Elastic Beanstalk 上获取 SYS_PTRACE
Posted
技术标签:
【中文标题】如何使用 Amazon Linux 2、单容器、无 Docker Compose 在 AWS Elastic Beanstalk 上获取 SYS_PTRACE【英文标题】:How to get SYS_PTRACE on AWS Elastic Beanstalk with Amazon Linux 2, single-container, no Docker Compose 【发布时间】:2021-07-05 17:23:46 【问题描述】:我需要在我的 docker 容器上获取 SYS_PTRACE 内核功能。这是 Docerrun.aws.json:
"AWSEBDockerrunVersion": "1",
"Authentication":
"Bucket": "some-bucket",
"Key": "somekey"
,
"Image":
"Name": "somename",
"Update": "true"
,
"Ports":[
"HostPort": 80,
"ContainerPort": 80
,
a few more ports
]
请记住,这是 Amazon Linux 2,它是一个全新的发行版和 EB 平台。我们没有使用 Docker Compose(您可以将其添加到 yml)。
我尝试在以下部分中添加:
"linuxParameters":
"capabilities":
"add": ["SYS_PTRACE"]
它被忽略了。
谢谢!
【问题讨论】:
【参考方案1】:在我看来,此设置v1 不支持。查看“Docker 平台配置 - 不使用 Docker Compose”[1] 部分下的文档时,linuxParameters 未列为“Dockerrun 的有效键和值”的一部分。 aws.json v1 文件”。您可能必须使用多容器 Docker 切换到 v2。 v2 的文档指出“Dockerrun.aws.json 的容器定义和卷部分使用与 Amazon ECS 任务定义文件的相应部分相同的格式”。 [2] 看起来您上面的代码可以在 v2 中运行,因为它是有效的任务定义部分,请参阅 [3]。
[1]https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/single-container-docker-configuration.html [2]https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html [3]https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html
【讨论】:
是的,该配置设置不起作用。感谢您在文档中找出原因。但是...如何通过 Amazon Linux 2 获得 SYS_PTRACE?在 Amazon Linux 1 中,您将修改 beanstalk 脚本。它只是 2 中的二进制 blob。 您能否澄清一下“获取 SYS_PTRACE”的含义?我不太清楚你试图实现什么......如果你想为你的容器提供内核功能,你必须使用支持它的 Dockerrun.aws.json 模式版本。 类似这样的东西:***.com/questions/28267419/… 适用于 Docker v1 您引用的线程中的答案是否解决了您的问题?通过 ebextensions 修改 docker run 命令看起来是一个不错的解决方法。这应该可以作为单容器 docker 使用本地 docker 守护进程而不是 ECS,我猜。以上是关于如何使用 Amazon Linux 2、单容器、无 Docker Compose 在 AWS Elastic Beanstalk 上获取 SYS_PTRACE的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes
如何在 amazon linux 2 映像中使用 localectl 和 timedatectl?
如何在 Amazon Aurora 中的标准配置和无服务器配置之间切换
如何在 Amazon Linux 2 平台上使用 Elastic Beanstalk 部署的 Node Js 中实现 gzip 压缩?