如何禁用docker容器的root访问权限?

时间:2017-05-05 22:08:12

标签: docker dockerfile

我们有希望在本地运行我们服务器的离岸开发人员,但出于安全考虑,我们不希望向他们提供服务器代码。所以解决方案是他们运行Docker容器,这是我们服务器的独立版本!所以他们身边没有复杂的设置! :)

问题是始终可以以root用户身份访问Docker实例的Linux shell,从而可以访问源代码。

如何禁用Docker容器的root访问权限?或者我们如何从root访问中隔离我们的源代码?

1 个答案:

答案 0 :(得分:2)

您可以修改创建用户的容器(例如foo)并为其分配正确的权限。然后,您可以使用参数docker run-u foo命令上运行docker容器。如果您运行例如:docker run --rm -ti -u foo myCustomImage sh。这将使用$而不是#打开sh shell。当然,在您的Dockerfile上,您必须先创建foo用户。

如果您需要更多限制(例如禁用某些内核功能),则自docker 1.10起可以使用seccomp安全功能。看看:

https://docs.docker.com/engine/security/seccomp/

使用此功能可以禁用和限制许多系统功能......以及拒绝mkdir命令的简单示例。像这样创建一个json文件(例如将其命名为sec.json):

{
    "defaultAction": "SCMP_ACT_ALLOW",
        "syscalls": [
                {
                    "name": "mkdir",
                    "action": "SCMP_ACT_ERRNO"
                }
            ]
}

然后运行您的容器:docker run --rm -ti --security-opt seccomp=/path/on/host/to/sec.json ubuntu:xenial sh。您可以在容器内检查您无法运行mkdir命令。

希望这有帮助。