docker - Mac 上 docker 中的 awslogs 日志记录驱动程序出现 NoCredentialProviders 错误
问题描述
嗨,我正在尝试在我的 mac 机器上的 docker 容器中启用云监视日志记录。
码头工人版本。
版本:18.03.1-ce 。API 版本: 1.37 。
每次启动容器时都会出现以下错误
Error response from daemon: failed to initialize logging driver: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
我尝试了以下方法:
- 在 /etc/default/docker 中导出 AWS_ACCESS_KEY_ID(等)
- 挂载 ~/.aws/credentials
- 将 aws 凭据作为 env 传递
但每次我得到同样的错误。
docker run -d -p 5801:8080 --env AWS_REGION=us-west-2 -v /Users/me/.aws/credentials:/root/.aws/credentials:ro --log-driver=awslogs --log-opt awslogs-region=us-west-2 --log-opt awslogs-group=perf-log-group --log-opt awslogs-create-group=true --log-opt awslogs-stream=awslogs-ing imageId
您能否建议我在这里缺少什么,就好像我删除日志部分应用程序工作正常并且我能够在应用程序中访问 aws api。
解决方案
我来到这里在网上寻找答案,因为我也无法理解文档要我做什么。最后,本教程帮助我完成了它:https ://transang.me/configure-docker-to-send-log-to-aws/ 。尽管我使用的是 Ubuntu 20.04,但我认为我们都面临同样的麻烦,无法理解将环境信息放在哪里
您必须提供用于本地机器的 docker 守护进程的凭据,而不是用于docker build
docker run 命令或 docker run 命令。
根据教程把配置放在这里:
# cat /etc/systemd/system/docker.service.d/override.conf
[Service]
Environment="AWS_ACCESS_KEY_ID=my-aws-access-key"
Environment="AWS_SECRET_ACCESS_KEY=my-secret-access-key"
接下来是命令
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
刷新更改并重新加载 docker 守护程序或停止并将环境变量直接提供给守护程序:
$ sudo systemctl stop docker
$ sudo env AWS_ACCESS_KEY_ID=my-aws-access-key AWS_SECRET_ACCESS_KEY=my-secret-access-key /usr/bin/dockerd
陷阱:如果您启用了 MFA,您可能还需要提供安全令牌(至少我偶然发现它),而不是守护程序调用变为:
$ sudo env AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN /usr/bin/dockerd
推荐阅读
- angular - 角度和材料日期选择器 - 如何保存无效日期的值(例如“ABC”)?
- python - Pygame colliderect() 函数返回 0(零)和 1(一)而不是 True 和 False?
- javascript - Electron App:无法加载预加载脚本
- ios - 如何在界面生成器中查找用户定义的检查属性错误?
- discord.py - Discord bot 没有看到公会成员和新成员加入
- c++ - C++ 中的 Character.forDigit
- regex - 如何在正则表达式中使用对 Windows 路径分隔符的支持?
- heroku - 如何更改heroku上的域并指向namecheap
- networking - 如何在 Cisco PIX 506E 防火墙上打开端口
- sql - 当值在另一个表的列中时计数