首页 > 解决方案 > 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

我尝试了以下方法:

但每次我得到同样的错误。

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。

标签: dockerloggingamazon-cloudwatchlogs

解决方案


我来到这里在网上寻找答案,因为我也无法理解文档要我做什么。最后,本教程帮助我完成了它:https ://transang.me/configure-docker-to-send-log-to-aws/ 。尽管我使用的是 Ubuntu 20.04,但我认为我们都面临同样的麻烦,无法理解将环境信息放在哪里

您必须提供用于本地机器的 docker 守护进程的凭据,而不是用于docker builddocker 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

推荐阅读