docker - 以非 root 身份在 kubernetes 中运行 Consul Docker 镜像

标签 docker kubernetes consul

我想在 kubernetes 中运行 consul,但不允许我以 root 用户身份运行它。

因此我添加了

RUN addgroup consul root

到 Dockerfile(派生自 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,现在应该是该组的成员)。

但是现在启动 pod 时出现以下错误

chown: /consul/data: Operation not permitted

chown 在 Consuls docker-entrypoint.sh 中执行我猜它(仍然)失败,因为用户 100 不是 root。

当容器有一个需要以 root 身份执行的入口点脚本时,有人可以解释一下如何使用非 root 用户启动容器吗?

最佳答案

我最终修复了 Consuls docker-entrypoint.sh,通过添加一些 if [ "$(id -u)"= 来在执行 chown 命令之前检查用户是否是 root “0”] 测试。

You can find the patch on GitHub.

关于docker - 以非 root 身份在 kubernetes 中运行 Consul Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50137167/

相关文章:

python - 带有python和mongodb的Docker镜像。从容器导出到主机

docker - 将DOCKER_OPTS传递到Daemon.json.j2

docker - ECS Agent启动Docker容器未完成。手动启动成功

kubernetes - 如何在 Kubernetes 中更新 api 版本列表

ubuntu - docker 群 : How to manually set node names?

bash - 如何在 docker 上正确运行入口点 bash 脚本?

kubernetes - 修补kubernetes仪表板

apache-spark - Spark 2.3 提交 Kubernetes 错误

consul - 在标签上过滤返回的 consul.io 服务

server - Consul.io - 如何在同一台机器上运行多个服务器