您好,我正在尝试在我的 Mac 机器上的 docker 容器中启用云监视日志记录。
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
我尝试了以下方法:
但每次我都会遇到同样的错误。
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 命令。
根据教程将配置放在这里:
# 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,您可能还需要提供安全 token (至少我偶然发现了它),而不是守护进程调用变成:
$ 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
关于docker - mac 上 docker 中的 awslogs 日志记录驱动程序出现 NoCredentialProviders 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142771/
相关文章:
amazon-web-services - 使用 Terraform 在不同区域创建 AWS S3
apache-spark - 从 google pubsub 到 spark streaming 的
kendo-ui - Kendo Grid MVC 无法将列缩小到超出某个限制
javascript - 防止在 body 上滚动(Matter.js)
swift - 如何使用 AVAudioEngine 在同一时间更改音调和速率
spring-boot - 日志记录执行器健康调用,即使在排除时也是如此
php - 是否可以从另一个包覆盖 laravel 包 View
indexing - 如何在 AWS-amplify graphql 模式中通过非主键查询