我已经不需要使用sudo,可以运行docker build
和 docker run
。但是,当我在docker容器内部启动进程时,进程会在主机上以root身份显示(而不是在容器内部)。
尽管由于docker的命名空间和cgroups而不能访问主机文件系统,但它是否比作为普通用户运行还更危险?
如果是这样,那么在docker中以非root方式运行东西的正确方法是什么?
我应该只需要在Dockerfile的末尾添加USER nonroot
吗?
更新:
构建某些内容需要root权限。我应该将USER
放在Dockerfile的最顶端,然后安装sudo
和其他依赖项,然后仅在构建过程中需要时使用sudo
吗?
谁能给出一个简单的Dockerfile示例,在开头使用USER,然后安装和使用sudo
?
sudo
的情况下运行docker build
比在镜像内部发生的任何事情都要危险得多。 - David Mazesshd
)必须以root
身份运行,对于这种情况,您可以使用用户命名空间隔离容器(例如,在容器内将root
映射到主机上不存在的非特权用户/UID)。 - masseyb