Kubernetes runAsUser 创建主目录
Kubernetes runAsUser create home directory
我的任务是让我们的 k8s 部署 运行 成为非 Root 用户。
我们使用的第 3 方库需要用户的主目录才能存在并具有写入权限。
我试过使用 initContainers 但我所做的任何更改基本上都被丢弃了,当然我对真正的容器没有权限
我想避免在 Dockerfile 中设置所有这些。有没有为用户 kubernetes 容器运行创建用户主目录?
Kubernetes 使用容器引擎 运行 具有特定图像的 pod。 大多数 Pods 随时可能死亡,因此它们必须基于具有所需状态的图像或以不同方式保存状态。
如果您想要保留某个状态并且无法使用 Dockerfile / 自定义映像,我建议您:
设置音量。
volume 挂载用户目录,这样文件就不会被删除,权限也会被保留。
https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
运行 容器和边车。
创建一个具有 sidecar 容器的 pod,该容器可以 运行 在同一网络中执行命令,并且可以与主容器共享卷挂载。
即。也许您可以创建一个共享卷,然后创建一个将目录作为根目录的图像,并将该图像用于边车容器。
https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/#creating-a-pod-that-runs-two-containers
但是,最简单的解决方案可能是仅修改 Dockerfile 中的权限,例如通过向 Dockerfile 添加一些行。如果要向现有的 Dockerfile 添加行,请确保在 CMD / ENTRYPOINT
之前添加它们
如果您将此映像基于现有的映像,请确保将其放在 Dockerfile 的顶部
FROM Myoriginalimage
Dockerfile 命令:
USER root
RUN chown $USER:$USER_GROUP -R $USER_HOME_DIR
USER $USER
如果您正在编辑现有的 Dockerfile
,请确保您的 CMD/ENTRYPOINT 在此之后
有关 Dockerfile 的更多信息:https://www.linode.com/docs/applications/containers/how-to-use-dockerfiles/
之后你可以推送到一个注册表,比如 dockerhub,假设你没有私有注册表或者出于任何原因无法访问一个。
- 在 hub.docker.com 创建一个帐户
- 适当地标记您的图像
docker login
docker push your-image
我的任务是让我们的 k8s 部署 运行 成为非 Root 用户。 我们使用的第 3 方库需要用户的主目录才能存在并具有写入权限。 我试过使用 initContainers 但我所做的任何更改基本上都被丢弃了,当然我对真正的容器没有权限
我想避免在 Dockerfile 中设置所有这些。有没有为用户 kubernetes 容器运行创建用户主目录?
Kubernetes 使用容器引擎 运行 具有特定图像的 pod。 大多数 Pods 随时可能死亡,因此它们必须基于具有所需状态的图像或以不同方式保存状态。
如果您想要保留某个状态并且无法使用 Dockerfile / 自定义映像,我建议您:
设置音量。 volume 挂载用户目录,这样文件就不会被删除,权限也会被保留。 https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
运行 容器和边车。 创建一个具有 sidecar 容器的 pod,该容器可以 运行 在同一网络中执行命令,并且可以与主容器共享卷挂载。
即。也许您可以创建一个共享卷,然后创建一个将目录作为根目录的图像,并将该图像用于边车容器。 https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/#creating-a-pod-that-runs-two-containers
但是,最简单的解决方案可能是仅修改 Dockerfile 中的权限,例如通过向 Dockerfile 添加一些行。如果要向现有的 Dockerfile 添加行,请确保在 CMD / ENTRYPOINT
之前添加它们如果您将此映像基于现有的映像,请确保将其放在 Dockerfile 的顶部
FROM Myoriginalimage
Dockerfile 命令:
USER root
RUN chown $USER:$USER_GROUP -R $USER_HOME_DIR
USER $USER
如果您正在编辑现有的 Dockerfile
有关 Dockerfile 的更多信息:https://www.linode.com/docs/applications/containers/how-to-use-dockerfiles/
之后你可以推送到一个注册表,比如 dockerhub,假设你没有私有注册表或者出于任何原因无法访问一个。
- 在 hub.docker.com 创建一个帐户
- 适当地标记您的图像
docker login
docker push your-image