docker - 带有aws-cli v2和dind的Docker镜像,基于Alpine:3.11

标签 docker aws-cli alpine

嗨,我正在努力使用基于Alpine:3.11的aws-cli v2和Docker创建Docker镜像

我正在使用以下命令:

FROM docker:stable #docker is based on Alpine

RUN apk add curl && \
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
    unzip awscliv2.zip && \
    ./aws/install

RUN aws --version && docker -v


我得到这样的输出:
Step 6/6 : RUN aws --version && docker -v
 ---> Running in 5015c32e62fe
/bin/sh: aws: Permission denied
The command '/bin/sh -c aws --version && docker -v' returned a non-zero code: 127

这是一个奇怪的行为。

最佳答案

AWS二进制文件不适用于基于Alpine的Docker镜像,因为它们是根据glibc进行编译的。

两种解决方案:

  • ubuntu:latest生成
  • 使用此Dockerfile,添加glibc,然后删除一些东西
  • FROM alpine:3.11
    
    ENV GLIBC_VER=2.31-r0
    
    RUN apk --no-cache add \
            binutils \
            curl \
        && curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
        && curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk \
        && curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk \
        && apk add --no-cache \
            glibc-${GLIBC_VER}.apk \
            glibc-bin-${GLIBC_VER}.apk \
        && curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
        && unzip awscliv2.zip \
        && aws/install \
        && rm -rf \
            awscliv2.zip \
            aws \
            /usr/local/aws-cli/v2/*/dist/aws_completer \
            /usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
            /usr/local/aws-cli/v2/*/dist/awscli/examples \
        && apk --no-cache del \
            binutils \
            curl \
        && rm glibc-${GLIBC_VER}.apk \
        && rm glibc-bin-${GLIBC_VER}.apk \
        && rm -rf /var/cache/apk/*
    
    RUN apk add docker
    
    RUN aws --version && docker --version
    

    关于docker - 带有aws-cli v2和dind的Docker镜像,基于Alpine:3.11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61463584/

    相关文章:

    docker - 用于Docker Swarm中所有服务的基本镜像中的Avro ?? NiFi-> Kafka-> PostgreSQL

    ubuntu - 无法在 Docker 中运行 nuttcp

    docker - 使用 Docker 容器

    python - botocore.exceptions.WaiterError : Waiter StackCreateComplete failed: Max attempts exceeded

    docker - Docker Alpine中的ImageMagick安装

    docker - 如何让 Docker 中的 GitLab Runner 看到自定义 CA 根证书

    amazon-web-services - 从命令行 (cli) 使用 aws ec2 describe-instances 时按标签过滤不起作用

    node.js - 如何显示 DynamoDB 表的内容

    docker - 我想使用一些从 ubuntu 到 alpine 的包

    linux - 有什么方法可以确保将不超过x个HTTP请求发送到Linux中的某个站点?