Docker 总是有一个 USER
命令来作为特定用户运行进程,但通常很多东西都必须作为 ROOT 运行。
我见过很多使用 ENTRYPOINT
和 gosu
来降低运行过程的图像。
对于 gosu
的需求,我还是有点困惑。用户还不够吗?
我知道 Docker 1.10在安全性方面有了很大的改变,但是我仍然不清楚在 Docker 容器中运行流程的推荐方法。
有人能解释一下我什么时候用 gosu
和 USER
吗?
谢谢
编辑:
Docker 最佳实践指南不是很清楚: 它说如果进程可以在没有特权的情况下运行,那么使用 USER
,如果需要 sudo,那么可能需要使用 gosu
。
这是令人困惑的,因为可以在 Dockerfile
中以 ROOT 的形式安装各种东西,然后创建一个用户并给它适当的特权,最后切换到该用户并以该用户的身份运行 CMD
。
那么我们为什么需要 sudo 或 gosu
呢?