docker - 创建透明的Docker网络会破坏AWS CLI

标签 docker amazon-ec2 aws-cli docker-for-windows

我正在运行Docker版本17.06.2-ee-6,在Windows Server 2016的Amazon EC2上构建e75fdb8。实例角色有权从一个特定的S3存储桶获取文件:

{
    "Effect": "Allow",
    "Action": [
        "s3:GetObject"
    ],
    "Resource": [
        "arn:aws:s3:::my-s3-bucket/*"
    ]
}

通常,如果我运行aws s3 cp s3://my-s3-bucket/my-file .,它将成功下载。但是,如果我使用以下命令创建透明的Docker网络:
docker network create -d transparent networkName
然后运行相同的AWS CLI命令,它将返回
fatal error: Unable to locate credentials
如果我再删除该网络
docker network rm [thatNetwork]
下载将再次起作用。

为什么创建透明网络会产生这种影响?

编辑:看起来它正在访问被阻止的AWS元数据IP地址(169.254.169.254)。还是不知道为什么。

最佳答案

我遇到了同样的问题,并通过添加第二个NIC并更改将169.254.169.254定向到新NIC的路由来解决此问题。

  • route print将在Interface List部分
  • 下的顶部显示NIC索引
  • route -p delete 169.254.169.254删除了旧路线
  • route -p add 169.254.169.254 mask 255.255.255.255 <gateway> IF <interface id from step 1>将通过第二个nic
  • 将流量定向到元数据api

    关于docker - 创建透明的Docker网络会破坏AWS CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770336/

    相关文章:

    docker - 如何自动停止docker容器?

    docker - 使用无根 docker 创建的绑定(bind)挂载在主机上有一个奇怪的 uid。如何删除这些文件夹?

    linux - 自动关闭预定的 Linux 机器

    amazon-web-services - 将 EC2 公共(public) IP 地址指向子域

    amazon-web-services - AWS CLI 仅列出当前运行的 cloudformation 堆栈的名称?

    docker - 如何增加 kubernetes 容器的 shm 大小(--shm-size 相当于 docker)

    python - 无法执行脚本 docker-compose Laravel

    mysql - 如何高效地将 AWS 机器 ID 存储在 Db 中

    amazon-web-services - AWSCli dynamodb update-item 命令语法

    python - 使用 python 的 sigv4-post-example