Docker aws cli容器的正确用户配置
AWS CLI v2文档提供了一个选项和指南。该指南非常简单易懂,容器可以很好地处理关键项目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
- 为所需的任何I/O工作安装
$pwd
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
1000GID
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
1000GID
1000
注意:使用AWS\u ACCESS\u KEY\u ID
和AWS\u SECRET\u ACCESS\u KEY
环境变量传递凭据,而不是装载凭据文件。环境变量的完整列表可用