Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用docker在alpine图像上以root用户身份运行bash?苏:要想正常工作,就必须用suid_Docker_Docker Compose_Kong - Fatal编程技术网

如何使用docker在alpine图像上以root用户身份运行bash?苏:要想正常工作,就必须用suid

如何使用docker在alpine图像上以root用户身份运行bash?苏:要想正常工作,就必须用suid,docker,docker-compose,kong,Docker,Docker Compose,Kong,编辑: 答案很清楚。进入容器时,可以使用标志--user root docker exec -it --user root mycontainername bash or sh 我刚刚下载了docker hub官方的1.5.0-alpine镜像服务(Kong API Gateway),现在我无法运行apk命令来安装nano 之前,我只需要进入集装箱 docker exec -it kong sh 或 例如,我能够运行类似于apk update或apk ad

编辑: 答案很清楚。进入容器时,可以使用标志
--user root

docker exec -it --user root mycontainername bash                 or sh

我刚刚下载了docker hub官方的1.5.0-alpine镜像服务(Kong API Gateway),现在我无法运行apk命令来安装nano

之前,我只需要进入集装箱

docker exec -it kong sh 

例如,我能够运行类似于
apk update
apk add nano
的命令

但是现在我得到了这些错误

$ apk update                                                                                                                                   
ERROR: Unable to lock database: Permission denied                                                                                                
ERROR: Failed to open apk database: Permission denied

$ apk add nano
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied
我还试着跑sudo和su。。。但是我有

$ su
su: must be suid to work properly
$ su root
su: must be suid to work properly
$ suid
sh: suid: not found

我真的需要建立自己的自定义映像吗?我使用的是官方版本,工作正常。

您可以使用
--user root
在容器中以root用户身份运行命令。要获取外壳,请执行以下操作:

docker exec -it --user root kong sh

您必须使用$CONTAINER\u ID:

docker exec -it --user root $CONTAINER_ID /bin/sh

构建自己的自定义图像是使用Docker的一个非常常规的部分,我不会回避它。(如您所示,如果您在
apk add…
中成功,那么一旦您删除容器,该工作就会丢失;将其写入Dockerfile是一种使其重复发生的好方法。)您是对的。但是在一个容器中使用
apk add
apt install
很方便,并且不会持久保存添加/安装的包。只是为了在那一刻调试一些东西。如果我无法与root连接?错误:身份验证信息“root”不存在有任何方法可以创建它吗?@NoamiA这听起来像是kubectl的问题(请参阅)。。使用容器名称是完全有效的,例如,
docker run--name ubuntu\u bash--rm-i-t ubuntu bash
然后
docker exec-It ubuntu\u bash
docker exec -it --user root $CONTAINER_ID /bin/sh