【问题标题】:Docker: How to disable root user in container?Docker:如何在容器中禁用 root 用户?
【发布时间】:2019-06-18 12:47:46
【问题描述】:
向他们通常制作的客户提供图像
$ docker-compose up -d
在生产中部署这些。很容易获得 root 并且很容易查看/修改所有文件:
$ docker-compose exec <service> /bin/sh
/bin/sh(root)# ...
如何避免客户在运行容器时以 root 身份获得对所有文件的完全访问权限。也许这在 Docker 中根本不可能,但至少让用户获得对容器内任何内容的完全访问权限应该更复杂。
是否有在容器中引入非 root 帐户的最佳实践?
【问题讨论】:
标签:
docker
docker-compose
root
【解决方案1】:
你不能。您可以随时运行
docker exec -u 0 (container ID) sh
获取root shell。 (假设图像有一个外壳,但几乎所有的都有。)
还请记住,任何可以运行任何docker 命令的人都可以编辑主机上的任何文件,并且可以从那里轻松成为 root,并且可以在/var/lib/docker 中尽情发挥。
通常认为通过RUN adduser 将容器设置为以非root 身份运行以使用基本发行版的工具然后使用Dockerfile USER 指令创建用户是一种很好的做法,但如果操作员真的可以在运行时覆盖它想要。