【问题标题】:Correct user configuration for aws-cli containeraws-cli 容器的正确用户配置
【发布时间】:2020-10-02 00:20:50
【问题描述】:

AWS CLI v2 文档提供了installing / configuring the cli via docker 的选项和指南。该指南非常简单易懂,并且容器可以很好地处理关键项目

  • 挂载本地 .aws 目录以向容器提供凭据
  • 为所需的任何 I/O 工作安装 $pwd

我将它用于 s3,并意识到我从 s3 复制到本地驱动器的任何文件都显示为 root 拥有。

>docker run --rm -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
download: s3://xxx/hello to ./hello
>ls -l
total 0
-rw-r--r-- 1 root root 0 Oct  2 09:43 hello

这是有道理的,因为进程在容器中以root 的身份运行,但并不理想。容器中没有任何其他用户,所以我不能只运行“as”kirk

>docker run --rm -u kirk -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
docker: Error response from daemon: unable to find user kirk: no matching entries in passwd file.

有没有办法以“用户”身份或通过委派用户访问容器来安装卷?我不在乎(并且不确定我可以控制)容器内的用户,但我希望该进程在主机系统上的用户上下文中运行。这里的正确方法是什么?

【问题讨论】:

    标签: docker aws-cli windows-subsystem-for-linux docker-volume pengwin


    【解决方案1】:

    您可以使用-u ${UID}:${GID} 的数值以映像中不存在的用户身份运行容器。例如:

    docker run --rm \
        -u 1000:1000 \
        -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
        -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
        -v ${PWD}:/aws:rw \
        amazon/aws-cli s3 cp s3://devops-example/lolz.gif .
    

    ... 将文件复制为UID 1000 GID 1000。

    注意:使用AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量传递凭据,而不是挂载凭据文件。环境变量的完整列表可在here 获得。

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 2022-01-16
      • 2020-11-30
      • 1970-01-01
      • 2019-03-15
      • 2023-03-22
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      相关资源
      最近更新 更多