运行 Consul Docker kubernetes 中的图像作为非 root
Run Consul Docker image in kubernetes as non root
我想 运行 在 kubernetes 中使用 consul,但我不能 运行 作为 root 用户。
因此我添加了
RUN addgroup consul root
到 Docker 文件(派生 FROM consul:1.0.3
)
并开始在 kubernetes 中部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
xyz.service: consul-deployment
name: consul-deployment
spec:
template:
spec:
securityContext:
runAsUser: 100
现在我希望 kubernetes 与用户 100
一起启动 consul(当我在 Docker 本地启动它时,他曾经是用户 consul
现在应该是该组的成员root
).
但现在我在 pod 启动时收到以下错误
chown: /consul/data: Operation not permitted
chown
在 Consuls docker-entrypoint.sh
中执行,我猜它(仍然)失败了,因为用户 100
不是 root。
当容器有一个入口点脚本期望以 root 身份执行时,谁能解释一下如何以非 root 用户启动容器?
我最终修复了 Consuls docker-entrypoint.sh
,通过添加一些 if [ "$(id -u)" = "0" ]
测试来检查用户是否是 root 用户,然后再执行 chown 命令。
如果/consul 是nfs 挂载,可能是服务器设置了root_squash
和all_squash
。这将导致 chown 操作失败,因为新的 files/folders 将自动提供给 nobody/nogroup.
如果您可以(临时)更改共享以使用 no_root_squash
和 no_all_squash
,直到所有文件都已设置,您应该没问题。由于该文件系统通常是持久化的,因此只需要一次,因此之后您可以将其重新设置为 root_squash
和 all_squash
。
万一有人在寻找解决方案。
您还可以使用来自 Bitnami 的 Consul 图像。他们提供流行应用程序的非根图像。
docker pull bitnami/consul:1.4.4
我想 运行 在 kubernetes 中使用 consul,但我不能 运行 作为 root 用户。
因此我添加了
RUN addgroup consul root
到 Docker 文件(派生 FROM consul:1.0.3
)
并开始在 kubernetes 中部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
xyz.service: consul-deployment
name: consul-deployment
spec:
template:
spec:
securityContext:
runAsUser: 100
现在我希望 kubernetes 与用户 100
一起启动 consul(当我在 Docker 本地启动它时,他曾经是用户 consul
现在应该是该组的成员root
).
但现在我在 pod 启动时收到以下错误
chown: /consul/data: Operation not permitted
chown
在 Consuls docker-entrypoint.sh
中执行,我猜它(仍然)失败了,因为用户 100
不是 root。
当容器有一个入口点脚本期望以 root 身份执行时,谁能解释一下如何以非 root 用户启动容器?
我最终修复了 Consuls docker-entrypoint.sh
,通过添加一些 if [ "$(id -u)" = "0" ]
测试来检查用户是否是 root 用户,然后再执行 chown 命令。
如果/consul 是nfs 挂载,可能是服务器设置了root_squash
和all_squash
。这将导致 chown 操作失败,因为新的 files/folders 将自动提供给 nobody/nogroup.
如果您可以(临时)更改共享以使用 no_root_squash
和 no_all_squash
,直到所有文件都已设置,您应该没问题。由于该文件系统通常是持久化的,因此只需要一次,因此之后您可以将其重新设置为 root_squash
和 all_squash
。
万一有人在寻找解决方案。 您还可以使用来自 Bitnami 的 Consul 图像。他们提供流行应用程序的非根图像。
docker pull bitnami/consul:1.4.4