要在 docker 映像中使用哪个用户、组(如果不是默认根)?



我读到最好不是根(0)用户用于在容器内运行应用程序。

我可以在创建映像时使用USER指令在 Dockerfile 中指定用户。

我只是随机选择一些东西并希望它在主机上不存在吗?

它是否是具有相同组的同一用户,就像它在主机上一样?
(容器内的用户和主机上的用户之间的关系是什么?)

我应该总是将USER保留为参数(ARG)吗?

我只是随机选择一些东西并希望它在主机上不存在吗?

你并不特别关心它是否存在于主机上。从容器内运行的东西的角度来看,主机不存在。从主机的角度来看,容器拥有的文件可能具有与之关联的奇数用户名和组名,但这没关系,这就是为什么所有内容都隔离在 Docker 存储区域内的原因。

它是否是具有相同组的同一用户,就像它在主机上一样? (容器内的用户和主机外的用户是什么关系?

容器中的用户与主机上的用户没有关系。容器内部有一个与主机上不同的唯一/etc/{passwd, groups, etc}。主机上的用户 ID 1000 可能是"bob",但在容器内可能是"apache"。

我应该总是将用户保留为参数 (ARG) 吗?

除非您的映像旨在以某种方式与主机上的文件系统集成(这不是通常的用例),否则没有理由将其作为构建参数。只需选择一个 UID 并使用它。

总是有人可以将运行容器的 UID 更改为--user(-u) 参数以docker run

相关内容

最新更新