Docker aws cli容器的正确用户配置

Docker aws cli容器的正确用户配置,docker,aws-cli,windows-subsystem-for-linux,docker-volume,pengwin,Docker,Aws Cli,Windows Subsystem For Linux,Docker Volume,Pengwin,AWS CLI v2文档提供了一个选项和指南。该指南非常简单易懂,容器可以很好地处理关键项目 装载本地.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 .

AWS CLI v2文档提供了一个选项和指南。该指南非常简单易懂,容器可以很好地处理关键项目

  • 装载本地
    .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.

是否有一种方法可以“作为”用户或通过授权用户访问容器来装载卷?我不关心(不确定我是否可以控制)容器中的用户,但我希望该进程在主机系统上的用户上下文中运行。正确的方法是什么?

您可以使用
-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\u ACCESS\u KEY\u ID
AWS\u SECRET\u ACCESS\u KEY
环境变量传递凭据,而不是装载凭据文件。环境变量的完整列表可用


您可以使用
-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\u ACCESS\u KEY\u ID
AWS\u SECRET\u ACCESS\u KEY
环境变量传递凭据,而不是装载凭据文件。环境变量的完整列表可用