【发布时间】:2020-05-21 22:47:17
【问题描述】:
我有一个我编写的 docker 容器,它为我设置了 AWS 配置文件。在 Linux 上它运行良好,在 WSL 上它部分运行。
当我运行容器时,我正在挂载~/.aws 目录,检查配置文件是否存在,如果不存在,我会创建它们。如果它们确实存在,我什么都不做。
在 Linux 中,我可以运行此容器,然后继续使用 aws-cli,没有任何问题。
在 Linux 的 Windows 子系统中 - 当我第一次运行容器时,它会为我创建配置文件。如果我选择再次运行容器,它会看到配置文件已经存在,所以它什么也不做。这告诉我文件存在某处,但我不能使用 aws-cli,因为该文件在 ~/.aws 不存在。
所以我的问题是 WSL 中的 ~/.aws 在安装到 docker 容器时在哪里?我试图在 WSL 中的整个文件系统上进行查找,但没有返回任何内容。我也尝试将挂载路径更改为/root/.aws,但我遇到了同样的情况。
编辑:
我仍然不知道上述问题的答案。但是,如果有人遇到这个问题,我确实找到了解决方法。
我已更新 Docker Desktop 以允许安装整个 c:/ 驱动器。然后我只是将我的 docker run 命令更改为挂载c:/.aws 而不是~/.aws,所以我的命令看起来像-v c:/.aws:/root/.aws。之后,我在 WSL export AWS_SHARED_CREDENTIALS_FILE="/mnt/c/.aws/credentials" 中添加了这个环境变量,现在 aws cli 会检测我的配置文件更改。
【问题讨论】:
-
在我尝试回答这个问题之前,您能否说明您使用的是哪个版本的 WSL,1 还是 2?以及您使用的是什么版本的 docker,我假设您使用 docker for windows 作为引擎?最后你在 WSL 中安装了 docker CLI 吗?
-
@Damo 我正在使用 WSL1、Docker Desktop 2.3.0.2(引擎版本 19.03.8)。是的,它是 Windows 的 docker 作为引擎,我确实在 WSL 中安装了 docker cli。
-
您能否发布您正在运行的挂载 ~/.aws 目录的 docker run 命令
-
@Damo
docker run -it -v ~/.aws:/root/.aws awsprofileprocessor:latest
标签: linux windows amazon-web-services docker windows-subsystem-for-linux