Docker: 如何在容器中禁用 root 用户?
Docker: How to disable root user in container?
向他们经常制作的客户提供图像
$ docker-compose up -d
将它们部署到生产环境中。很容易获得 root 权限并非常容易地查看/修改所有文件:
$ docker-compose exec <service> /bin/sh
/bin/sh(root)# ...
如何避免客户在 运行 容器时以 root 身份获得对所有文件的完全访问权限。也许这在 Docker 中根本不可能,但是对于用户来说,要获得对容器内任何内容的完全访问权限至少应该更加复杂。
是否有在容器中引入非 root 帐户的最佳实践?
你不能。你总是可以 运行
docker exec -u 0 (container ID) sh
获得根shell。 (假设图像有 shell,但几乎所有图像都有。)
还要记住,任何可以 运行 任何 docker
命令的人都可以编辑主机上的任何文件,并且可以从那里轻松成为 root,并且可以在 /var/lib/docker
他们心满意足。
通常认为通过 RUN adduser
将容器设置为 运行 作为非 root 用户以使用基本发行版的工具然后使用 Dockerfile USER
指令创建用户是一种很好的做法,但是如果操作员真的想要,可以在 运行 时间覆盖它。
向他们经常制作的客户提供图像
$ docker-compose up -d
将它们部署到生产环境中。很容易获得 root 权限并非常容易地查看/修改所有文件:
$ docker-compose exec <service> /bin/sh
/bin/sh(root)# ...
如何避免客户在 运行 容器时以 root 身份获得对所有文件的完全访问权限。也许这在 Docker 中根本不可能,但是对于用户来说,要获得对容器内任何内容的完全访问权限至少应该更加复杂。
是否有在容器中引入非 root 帐户的最佳实践?
你不能。你总是可以 运行
docker exec -u 0 (container ID) sh
获得根shell。 (假设图像有 shell,但几乎所有图像都有。)
还要记住,任何可以 运行 任何 docker
命令的人都可以编辑主机上的任何文件,并且可以从那里轻松成为 root,并且可以在 /var/lib/docker
他们心满意足。
通常认为通过 RUN adduser
将容器设置为 运行 作为非 root 用户以使用基本发行版的工具然后使用 Dockerfile USER
指令创建用户是一种很好的做法,但是如果操作员真的想要,可以在 运行 时间覆盖它。