如何在非 root 运行的容器中安装新包?

AVa*_*arf 12 containers docker alpine-linux

我需要在正在运行的容器中安装简单的包,例如curl,但我遇到了这个错误:

~ $ apk add curl
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied
Run Code Online (Sandbox Code Playgroud)

我知道如何在 Dockerfile 中更改用户,但我无权访问 docker 文件,并且我需要在容器内或在容器内打开终端时执行此操作。我尝试使用--user=但没有成功:

kubectl exec -n kube-system --user="root" -it tiller-deploy-75f6c87b87-xtpxl /bin/ash
error: auth info "root" does not exist
Run Code Online (Sandbox Code Playgroud)

我如何获得root访问权限或安装curl?

nis*_*yal 8

使用 kubectl describe pod ... 查找运行 Pod 的节点和容器 ID (docker://...)

通过 SSH 进入节点

run docker exec -u root ID -- /bin/bash
Run Code Online (Sandbox Code Playgroud)

  • 当目标容器中不存在用户“root”时,这不会回答这种情况,您仍然会收到“错误:身份验证信息“root”不存在” (2认同)

小智 -3

你的用户是sudoer吗?运行这个命令:

sudo apk add curl
Run Code Online (Sandbox Code Playgroud)

如果上述命令不起作用,请运行此命令。

docker exec -it CONTAINER_NAME apk add curl
Run Code Online (Sandbox Code Playgroud)