如何在SBT构建的Docker映像中提升特权

时间:2019-07-12 19:54:44

标签: scala docker kubernetes sbt

我正在尝试调试我的应用程序,该应用程序在docker容器中的kubernetes中运行。该映像是使用sbt native-packager docker插件构建的。我想登录到pod并在那里进行调查,但是默认用户帐户(demiourgos728)没有特权,并且我不知道如何切换到root帐户。

我尝试运行kubectl exec --user=root image -- bash(未找到用户),也尝试在映像中运行su -(身份验证失败),但没有成功。用于构建应用程序的基本映像是java:8。

这些是我在build.sbt中的docker设置:

.settings(
    Seq(
      dockerBaseImage := "java:8",
      publishArtifact := false,
      dockerExposedPorts ++= Seq(8088), 
      packageName in Docker := "api-endpoint"
    ))

1 个答案:

答案 0 :(得分:2)

--user=root中的

kubectl用于在kube-apiserver上进行身份验证,而不是强制容器以用户身份在容器中执行命令。

如果您在节点上运行docker并想强制升级为root,则可以ssh到运行容器的节点,然后运行:

$ docker exec -it --user=root <container-id> bash
# or
$ docker exec -it -u root <container-id> bash

您可以使用以下方法找出运行pod /容器的节点:

$ kubectl describe pod <pod-id>