【问题标题】:Restrict access of other linux user to docker container限制其他 linux 用户对 docker 容器的访问
【发布时间】:2018-11-16 07:35:53
【问题描述】:

我有两个 linux 用户,分别命名为:ubuntu 和 my_user 现在我构建了一个简单的 Docker 映像并运行 Docker 容器 在我的 docker-compose.yml 中,我将一些文件从本地机器批量挂载到容器中,这些文件是由“ubuntu”用户创建的。

现在,如果我通过“my_user”登录,并使用 docker exec 命令访问由“ubuntu”用户创建的 docker 容器,那么我就可以访问容器中存在的任何文件。

我的要求是限制 'my_user' 的访问权限,以访问由 'ubuntu' 用户创建的 Docker 容器的内容。

【问题讨论】:

  • 你到底想在这里实现什么?
  • 不具备 Moby/Docker 引擎的核心功能;多租户支持和用户管理/基于角色的访问控制超出了范围,但平台(例如 Docker 企业版)提供了该功能
  • 嗨 jonrsharpe,实际上我希望我的容器数据得到保护,这样只有一个 linux 用户可以访问这些容器内容,其他 linux 用户应该不能对容器数据执行更改。

标签: linux docker docker-compose dockerfile


【解决方案1】:

这是目前无法实现的。如果您的用户可以执行 Docker 命令,则实际上意味着该用户具有 root 权限,因此无法阻止该用户访问任何文件。

【讨论】:

  • 我们可以使用任何第三方实用程序来实现这一点
【解决方案2】:

可以在数据卷后面加“ro”,表示只读。像这样

主机:容器:ro

或者你可以在你的 docker-compose.yml 中添加 ReadOnly 属性

以下是如何在 docker-compose 中指定只读容器的示例:

【讨论】:

    【解决方案3】:

    @surabhi,只有通过在 docker-compose 文件中添加字段来限制文件访问的选项。

    read_only: flag to set the volume as read-only

    nocopy: flag to disable copying of data from a container when a volume is created

    您可以找到更多信息here

    【讨论】:

      【解决方案4】:

      您可以在该容器中安装和运行 sshd,将端口 22 映射到可用的主机端口,并通过 ssh 密钥管理用户可访问性。 这将不允许用户通过 docker 命令管理事物,但会允许该用户访问该容器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-11
        • 2021-03-01
        • 2017-02-16
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多