You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Docker外部卷aws_credentials填充AWS凭证且不暴露本地路径

如何给Docker外部卷填充AWS凭证数据

问题背景

我需要将主机上/home/user/.aws/credentials的AWS凭证文件添加到Docker容器中,让容器能够访问AWS API。
通过命令行运行容器时可以执行以下命令:

docker run --rm -d -v /home/user/.aws/:/.aws:ro \
--env AWS_CREDENTIAL_PROFILES_FILE=/.aws/credentials proj:latest

使用Docker Compose时,我希望通过外部卷挂载.aws目录,配置如下:

services:
  proj:
    volumes:
      - aws_credentials:/.aws:ro
    environment:
      AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials
volumes:
  aws_credentials:
    external: true

但我不清楚如何向这个外部卷aws_credentials填充数据,且以下方法均不可行:

  • 使用secrets替代volumes:未使用Docker Swarm
  • 使用config替代volumes:未使用Docker Swarm
  • 使用绑定挂载替代卷:Docker Compose文件需提交到源码控制,不想包含本地路径
services:
  proj:
    volumes:
      - /home/user/.aws/:/.aws:ro # <-- 不想把这个写进源码控制
    environment:
      AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials

解决方法

你可以通过临时容器挂载外部卷和本地凭证目录,将文件复制到外部卷中,具体步骤如下:

  1. 创建外部卷(若未创建)
docker volume create aws_credentials
  1. 复制本地凭证到外部卷
    运行临时容器,将本地.aws目录的内容复制到外部卷中:
docker run --rm -v /home/user/.aws:/source -v aws_credentials:/target busybox cp -r /source/. /target/

这条命令借助busybox镜像完成文件复制,执行后临时容器会自动删除(--rm参数)。

  1. 验证卷内数据
    可以通过临时容器查看外部卷的内容,确认数据是否成功填充:
docker run --rm -v aws_credentials:/aws busybox ls -la /aws

若能看到credentials文件,说明数据已成功写入外部卷。

完成以上步骤后,即可正常使用之前的Docker Compose配置启动容器,容器会通过外部卷获取AWS凭证。


内容的提问来源于stack exchange,提问作者f.khantsis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:45:30