如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Linux EC2 安装 SSL(无连接)

如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes

如何在 amazon linux 2 映像中使用 localectl 和 timedatectl?

如何在 Amazon Aurora 中的标准配置和无服务器配置之间切换

如何在 Amazon Linux 2 平台上使用 Elastic Beanstalk 部署的 Node Js 中实现 gzip 压缩?

如何在 Amazon EC2 容器服务 (ECS) 中使用不安全的 docker 注册表?