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

Docker 如何在非root运行的容器中安装新软件包?,docker,containers,alpine,Docker,Containers,Alpine,我需要在正在运行的容器中安装简单的软件包,如curl,但我面临以下错误: ~ $ apk add curl ERROR: Unable to lock database: Permission denied ERROR: Failed to open apk database: Permission denied 我知道如何在docker文件中更改用户,但我没有访问docker文件的权限,我需要在容器内或在容器内打开终端时执行此操作。我尝试使用--user=,但没有成功: kubectl ex

我需要在正在运行的容器中安装简单的软件包,如curl,但我面临以下错误:

~ $ apk add curl
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied
我知道如何在docker文件中更改用户,但我没有访问docker文件的权限,我需要在容器内或在容器内打开终端时执行此操作。我尝试使用
--user=
,但没有成功:

kubectl exec -n kube-system --user="root" -it tiller-deploy-75f6c87b87-xtpxl /bin/ash
error: auth info "root" does not exist
如何获得root访问权限或安装curl?

是您的用户sudoer吗? 运行以下命令:

sudo apk add curl
如果上述命令不起作用,请运行此命令

docker exec -it CONTAINER_NAME apk add curl

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

SSH到节点中

run docker exec -u root ID -- /bin/bash

合理的建议,效果很好。Docker作为root工作,kubectl与suer root不工作。知道为什么吗?我没有投反对票,尽管我很想投。你的回答很好,但是你的回答忽略了问题的其余部分/主体部分,因此你的回答不应该被标记为正确@Avarf说他的尝试告诉你他已经尝试了你的两种解决方案(sudo通常不应该安装在容器中)。他面临的问题无法在容器内解决。他使用了kubectl,所以公认的答案应该使用这些信息。好的,谢谢你的指导。