【问题标题】:How to access Azure Container Instance as root user?如何以 root 用户身份访问 Azure 容器实例?
【发布时间】:2022-10-13 18:44:57
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

       docker pull <image_name>
    

    从 docker 拉取图像时,如果它询问,我们需要提供凭据

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

    docker run -it <image_id> /bin/bash
    

    这里容器正在运行,我无法使用 root 用户命令

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

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

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

    您可以使用此 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
    

    【讨论】:

      猜你喜欢
      • 2018-07-02
      • 2020-12-19
      • 2016-09-14
      • 2018-06-18
      • 2021-09-02
      • 2018-04-09
      • 2017-03-03
      • 2016-03-16
      • 2018-01-05
      相关资源
      最近更新 更多