【问题标题】:Dockerfile privileged flag for Docker container (Needed because of Apache error ulimit ) AWSDocker 容器的 Dockerfile 特权标志(由于 Apache 错误 ulimit 需要)AWS
【发布时间】:2015-05-09 04:36:42
【问题描述】:

我想启动一个具有权限的容器。手动我可以直接输入:

sudo docker run -privileged name/image

但是如何从具有权限的 Dockerfile 生成容器,在 dockerfile 中是否有任何命令可以做到这一点?

在我的情况下,我正在亚马逊进行部署,以防它无法从 Dockerfile 完成,是否可以从 Dockerrun.aws.json 完成?

附言。为了给这个问题提供一些背景信息,我需要 docker 容器中的权限才能因为 apache 而更改 ulimit。

编辑:

我不会在容器中本地更改它,因为在 Docker 中,容器的 ulimit 是主机之一。这就是为什么我在本地更改它不会影响容器的原因。

【问题讨论】:

  • 不是解决方案,而是一些一般性建议,可能会引导您转向另一个方向 - 几乎每个有经验的人都建议不要在提升的权限级别上运行任何东西一段时间由于安全问题、简单错误或疏忽造成损害的风险等原因。
  • 我同意,但不确定解决方案是在亚马逊在实例中创建容器时尝试忽略错误(我不知道该怎么做),还是尝试修复错误来自 Dockerfile

标签: apache amazon-web-services docker dockerfile ulimit


【解决方案1】:

以提升的权限运行容器可能会引发各种安全性和可靠性问题。

我建议不要使用提升的权限启动整个 Docker 会话,这可能意味着在其上运行的所有内容都将具有提升的权限,而是创建一个为 ulimit 设置更改编号的 docker 容器。

我不是专家,但是创建自己的容器的说明看起来很清楚,然后在新容器中 sudo vi /etc/security/limits.conf,更改 soft nofilesoft nproc,保存然后导出新容器似乎是要走的路。然后,您可以使用正常权限级别运行新容器。

另一个似乎在许多地方使用的选项是运行多个容器实例以避免拥塞问题。

【讨论】:

  • 问题是:docker容器的ulimit就是宿主机的ulimit。这就是为什么如果我更改容器内的 ulimit,它真的没有考虑到并且我一直有 ulimit 的错误。通常这个错误就像一个警告,但亚马逊不会因为它而自动创建容器。正如您在另一个问题中看到的那样:stackoverflow.com/questions/30077465/…
  • 如果它是在亚马逊主机上运行的亚马逊创建的容器,那么您必须向亚马逊申请以提高 主机 限制。即使容器具有提升的权限,它也不应该更改主机设置,如果可以的话,亚马逊会非常不高兴!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多