azure - 如何以 root 用户身份访问 Azure 容器实例?

标签 azure docker azure-cli azure-container-instances

我有一个 Azure 容器实例,默认情况下有一个非 root 用户。为了调试和实验,我想像使用普通的 docker 容器一样执行到容器中: docker exec -u root ... ,这样我就在容器中拥有 sudo 权限。如 Interacting with a container in Azure Container Instances 中详述,您可以通过az container exec ...运行exec命令,但正如克里斯蒂安的回答中提到的,https://stackoverflow.com/a/50334426/17129046 ,似乎没有办法添加额外的参数,不仅仅是为正在运行的程序,而且似乎也不支持 docker exec 所具有的任何附加选项,包括 -u运行时更改登录容器的用户的选项 docker exec -u root ... '/bin/bash' .

我尝试过使用su在容器中,但它提示输入密码,而且我不知道该密码是什么,因为据我所知,创建此 ACI 使用的镜像的 dockerfile 没有设置密码(该镜像是通过创建的)本托姆尔)。默认用户名为 Bentoml。运行结果id :

uid=1034(bentoml) gid=1034(bentoml) groups=1034(bentoml)

有解决办法吗?也许有一种以 root 身份 ssh 进入容器的方法?

最佳答案

我尝试重现该问题并得到以下输出

我已使用以下命令从 docker hub 中提取了 docker 镜像

   docker pull <image_name>

从 docker 中提取镜像时,如果需要,我们需要提供凭据

enter image description here

我已使用以下命令运行图像

docker run -it <image_id> /bin/bash

enter image description here

此处容器正在运行,但我无法使用 root 用户命令

要以 root 身份访问容器,请使用以下命令

docker run -u 0 -it image_id /bin/bash

在这里我现在可以安装所有根包

enter image description here

您可以使用此 docker 文件设置无密码,这样它就不会询问任何密码

RUN apt-get update \
 && apt-get install -y sudo

RUN adduser --disabled-password --gecos '' docker
RUN adduser docker sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER docker

关于azure - 如何以 root 用户身份访问 Azure 容器实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74032606/

相关文章:

powershell - 带有事件中心的 Azure CLI

azure - 需要启动虚拟机排除特定虚拟机

asp.net - 我们可以从 azure 检索 asp.net 项目吗?

java - Documentdb java SQL API-带空格的查询集合

php - 从主机访问 docker 回答 curl : (56) Recv failure: Connection reset by peer

docker - docker inspect 的 Config 和 ContainerConfig 有什么不同?

azure - 使用服务主体 - invalid_client 从发布管道运行 Azure CLI 脚本

c# - Azure Web App 中的 nuget 更新后 Web API 返回 HttpResponseMessage 对象

docker - 如何释放以前在Docker镜像中使用过但稍后会删除的空间

Azure CLI 获取 Azure Pipeline 中的当前服务主体详细信息