docker run -it --rm docker:latest sh
wget "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -O "awscliv2.zip"
# curl not installed
unzip awscliv2.zip
./aws/install
# sudo not install
μ€λ₯:
/ # ./aws/install
./aws/install: line 78: /aws/dist/aws2: not found
You can now run: /usr/local/bin/aws2 --version
/ # aws2
sh: aws2: not found
λ¬Έμ λ₯Ό λλ²κΉ νλ €κ³ μλνμ§λ§ μ€ν¨ μ΄μ λ₯Ό μ μ μμμ΅λλ€. μ€μΉ μ€ν¬λ¦½νΈκ° μ½κ° λΆμμ ν κ² κ°μ΅λλ€. v2 λ μ΄λΈλ μΆκ°νλ €κ³ νμ΅λλ€.
μ°λ¦¬κ° κ²μνλ λ°μ΄λ리λ alpine
κΈ°λ° λ컀 μ΄λ―Έμ§μμ μλνμ§ μμ΅λλ€. μλνλ©΄ glibcμ λν΄ μ»΄νμΌνκΈ° λλ¬Έμ
λλ€. sh: aws2: not found
λ μ΄ λ°μ΄λ리λ₯Ό μ€ννλ €κ³ ν λ λ°μν©λλ€. ubuntu:latest
μ κ°μ μ΄λ―Έμ§μμ μλνλ©΄ μ€μΉ νλ‘κ·Έλ¨μ΄ μλν©λλ€.
λν μΌλ° Linux λ°μ΄λ리μ©μΌλ‘ νλ κ²μ²λΌ μνμΈ νΈν λ°μ΄λ리λ₯Ό μΆμνμ§ μμ κ²μ΄λΌκ³ μκ°ν©λλ€. μνμΈμ λΉλλ λ°μ΄λ리μ ν¨κ» μ 곡λλ λ컀 μ΄λ―Έμ§λ₯Ό 릴리μ€νλ κ²½ν₯μ΄ λ ν¬λ€κ³ μκ°ν©λλ€.
λ΅λ³ν΄ μ£Όμ μ κ°μ¬ν©λλ€. https://docs.aws.amazon.com/cli/latest/userguide/install-civ2-linux.html "Linuxμ© μ μ 쑰건" μλμ λ¬Έμννκ±°λ μνμΈ κΈ°λ°μμ μ€λ₯λ₯Ό λ μ¬μ©μ μΉνμ μΌλ‘ λ§λ€ μ μμ΅λκΉ? μ΄λ―Έμ§μΌμ΄μ€?
μ¬μ©μ κ°μ΄λμμ μ λ°μ΄νΈν μ μλλ‘ νκ² μ΅λλ€. λλ λν μ΄ κ²½μ°μ λν΄ λ³΄λ€ μ¬μ©μ μΉνμ μΈ μ€λ₯ λ©μμ§λ₯Ό λ§λλ μμ΄λμ΄λ₯Ό μ’μν©λλ€.
@joguSD μ΄λ¦¬λ₯μ , μνμΈμ λ컀 μ΄λ―Έμ§μ νμ€μ λλ€. νΉν μλνλ₯Ό μνκ³ λ§€μ° ν° λ컀 μ΄λ―Έμ§λ₯Ό μ§μμ μΌλ‘ λ€μ΄λ‘λνκ³ μΆμ§ μμ λΉλ / ci μμ€ν μ κ²½μ°.
λ€λ¨κ³ λΉλμμ 곡μ μνμΈ λ컀 μ΄λ―Έμ§λ₯Ό μ¬μ©νμ¬ λ°μ΄λ리λ₯Ό λ€λ₯Έ λ컀 μ΄λ―Έμ§λ‘ 볡μ¬ν μ μμ΅λλ€.
@chadgrant -
@BarakBD-Globality μ λ ββκ°μ§κ³ μμ§ μμ§λ§ aws-alpine μ΄λ―Έμ§κ° μμ±λλ©΄ λ€μμ μνν μ μμ΅λλ€.
FROM aws_alpine_image:latest as aws
FROM alpine:latest
COPY --from=aws /usr/local/bin/binary /usr/local/bin/binary
κ·Έλ€μ΄ μνμΈμ μ§μνμ§ μλ κ²μ μ κ°μ λλ€. νμ€ μ΄λ―Έμ§μ λλ€.
λν μΌλ° Linux λ°μ΄λ리μ©μΌλ‘ νλ κ²μ²λΌ μνμΈ νΈν λ°μ΄λ리λ₯Ό μΆμνμ§ μμ κ²μ΄λΌκ³ μκ°ν©λλ€. μνμΈμ λΉλλ λ°μ΄λ리μ ν¨κ» μ 곡λλ λ컀 μ΄λ―Έμ§λ₯Ό 릴리μ€νλ κ²½ν₯μ΄ λ ν¬λ€κ³ μκ°ν©λλ€.
@joguSD μ΄μ λν λ
Όμλ μμ§μμ΄ μμμ΅λκΉ? μνμΈμ μ λ³λ₯ μ κ³ λ €νλ©΄ κ½€ ν° μΌμΈ κ² κ°μ΅λλ€. λ κ°μ μ¬λλ€μ cicd λ° κΈ°ν μλνμμ aws
λ₯Ό μ¬μ©νλ―λ‘ μνμΈ κΈ°λ° μ΄λ―Έμ§μ μ¬μ©ν μ μλ κ²½μ° λ²μ 2λ₯Ό μ¬μ©νλ κ²μ μλΉν μμ
μμ΄λ μ΅μ
λ μλλλ€! κ°μ¬ ν΄μ.
busybox
μλ μ€μΉν μ μμ΅λλ€.
ν₯λ―Έλ‘κ²λ μ΄κ²μ κΈ°λ³Έ μ΄λ―Έμ§λ‘ μ¬μ©νλ©΄ AWS cliκ° μ λλ‘ μ€μΉλκ³ μλν©λλ€.
μμ μ±νopenjdk/openjdk11:μνμΈ
λ€μ Dockerfileμ μ¬μ©νμ¬ μ΄ μμ μ μνν μ μμμ΅λλ€.
FROM adoptopenjdk/openjdk11:alpine
RUN apk add --no-cache \
ca-certificates \
unzip \
curl \
groff \
less \
bash \
openssh-client
WORKDIR /home
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& ./aws/install \
&& rm awscliv2.zip \
&& rm -R aws
acceptopenjdk μ΄λ―Έμ§κ° μλνλ μ΄μ λ λλ½λ glibc λΌμ΄λΈλ¬λ¦¬κ° ν¬ν¨λμ΄ μκΈ° λλ¬Έμ λλ€. μνμΈ λ¦¬λ μ€λ μμ ν glibcμ λν κ²½λ λμμΈ 'musl glibc'λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€. aws cli v2 λ°μ΄λ리λ muslμμ μλνμ§ μμΌλ©° μλνλ €λ©΄ λΌμ΄λΈλ¬λ¦¬κ° λͺ κ° λ νμν©λλ€.
Java μ΄λ―Έμ§λ₯Ό μ¬μ©νλ λμ μλ Dockerfileμ Alpine Linuxμμ AWS CLI v2λ₯Ό μ€ννλ λ°©λ²μ μλ‘ μ¬μ©ν μλ μμ΅λλ€.
FROM alpine:3.11
ENV GLIBC_VER=2.31-r0
# install glibc compatibility for alpine
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/*
μμ λ΄μ©μ glibc λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€μ΄λ‘λνκ³ AWS CLI v2λ₯Ό λ€μ΄λ‘λ λ° μ€μΉνλ©° μλ μμ±κ³Ό κ°μ΄ νμνμ§ μμ μλ μλ μΌλΆ νλͺ©μ μ κ±°ν©λλ€. κ²°κ³Ό μ΄λ―Έμ§μ ν¬κΈ°λ μ½ 100MBμ λλ€.
κ·Έλ λ€λ©΄ μ€ν μ€μΈ λ컀 컨ν
μ΄λ λ΄λΆμμ aws ecr get-login-password β¦ | docker login β¦
λ₯Ό μ»λ μ΅λ¨ κ²½λ‘λ 무μμ
λκΉ? (μ¦, docker:dind
)?
docker:dind
μ§μμΌλ‘ λλ§μ docker:stable
μ΄λ―Έμ§λ₯Ό ꡬμΆνλ κ²μ νΌνκ³ μΆμ΅λλ€. μ μ΄λ https://github.com/aws/aws-cli/issues/4685#issuecomment -615872019 μ루μ
λλΆμ κ°λ₯νμ΅λλ€. κ°μ¬ν©λλ€!
@bentolor docker:dind
λ alpineμ μ¬μ©νκΈ° λλ¬Έμ μμμ μΈκΈν Dockerfileμ 첫 λ²μ§Έ μ€λ§ λ³κ²½νλ©΄ λ κ² κ°μ΅λλ€. λμ FROM alpine:3.11
λΉμ μ μ¬μ©ν΄μΌ FROM docker:dind
. μμ μ μ΄λ―Έμ§λ₯Ό ꡬμΆνκ³ μλ€λ κ²μ μλ―Ένμ§λ§ ....
@blagerweij λλΆμ μ λ§ μ μλν©λλ€.
λν κ°μ¬ @blagerweij : λλ μ¬λ³Έ λ° μ루μ μ λΆμ¬ λ£μ΄ μκΈ°ν λ΄μ₯ 곡곡, μ¬μ©μ μ μ κ³ μ νμκΈ° μ΄λ―Έμ§λ₯Ό νμ : https://hub.docker.com/r/bentolor/docker-dind-awscli
@bentolor λλ λΉμ μ Dockerfileκ° μ¬μ©νλ λΉμ μ repoμ μ£Όλͺ© FROM docker:stable
λμ FROM docker:dind
. μμ μ AWS μ§μμ ν΅ν΄ Dockerμμ Dockerμ© μ΄λ―Έμ§λ₯Ό λ§λλ κ²μ΄λΌκ³ μκ°νμ΅λλ€.
@blagerweij μ€λͺ μ μν΄ κ³΅μ Docker μ΄λ―Έμ§ μμ μλ μ΄λ―Έμ§λ₯Ό μ°Έμ‘°νμμμ€.
μΌλ°μ μΈ μ¬μ©λ²μ λ€μκ³Ό κ°μ΅λλ€.
docker:dind
μΈμ€ν΄μ€λ₯Ό μμν λ€μdocker:dind
컨ν
μ΄λμ μ°κ²°λ λ³λμ docker:stable
μΈμ€ν΄μ€λ₯Ό μμν©λλ€.docker:dind
컨ν
μ΄λ λ΄μμ μ€ν μ€μΈ λ컀 λ°λͺ¬μΌλ‘ 리λλ μ
νλ λ λ²μ§Έ 컨ν
μ΄λ λ΄μμ docker
λͺ
λ Ή μ€νμ μμν©λλ€.λ°λΌμ: docker:dind
μΈμ€ν΄μ€κ° κ²°κ΅ Docker λͺ
λ Ήμ μ€ννλ κ²μ μ¬μ€μ΄μ§λ§ CLI νλ°νΈμλλ μ€μ λ‘ docker:stable
μΈμ€ν΄μ€μ μμ΅λλ€. κ·Έλ¦¬κ³ κ·Έκ²μ΄ λ°λ‘ AWSμ λ‘κ·ΈμΈν΄μΌ νλ κ³³μ
λλ€ ;-)
μ μ΄λ μ΄κ²μ λ΄κ° μκ³ μλ μ¬μ© ν¨ν΄μ
λλ€(μ: Gitlab CI λ₯Ό μ¬μ©νμ¬ λ컀 μ΄λ―Έμ§λ₯Ό λΉλν λ). μ§μ μ μΈ docker:dind
μ¬μ© μλ리μ€λ μμ΅λκΉ?
https://hub.docker.com/r/frolvlad/alpine-glibc/ μμ glibcμ ν¨κ» μνμΈ μ΄λ―Έμ§λ₯Ό μ¬μ©ν μ μμ΅λλ€.
aws μ€λͺ
μμ λ¨κ³μ λ°λΌ aws cliλ₯Ό μ€μΉν©λλ€. λλ₯Ό μν΄ μΌνλ€.
@blagerweij λ컀 μ΄λ―Έμ§μμ λ컀μ ν¨κ» μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ΅λλ€. aws cliλ μ μλν©λλ€. λ°©κΈ λΉλμμ μ€λ₯κ° λ°μνμ΅λλ€.
/usr/glibc-compat/sbin/ldconfig: /usr/glibc-compat/lib/ld-linux-x86-64.so.2 is not a symbolic link
@amiram μ, λν ν΄λΉ λ©μμ§λ₯Ό https://github.com/envoyproxy/envoy/issues/9078#issuecomment -576837432 μ°Έμ‘°
λκ΅°κ° μ΄ λ¬Έμ μ μ΄λ¦μ "alpine/muslμ© λ°μ΄λ리 λ°°ν¬"μ κ°μ΄ λ°κΏ μ μμ΅λκΉ?
@joguSD @jordanst3wart
μ, "alpine / musl libcμ© λ°μ΄λ리 λ°°ν¬"μ λ§μ‘±ν©λλ€. λ¬Έμ κ° μμΌλ©΄ μλ €μ£ΌμΈμ
μ΄μ νλ‘μ νΈμλ aws s3 cpλ§ νμνλ―λ‘ pipλ‘ awscli V1μ μ€μΉνμ΅λλ€.
FROM alpine:3.12
RUN pip install awscli
RUN aws s3 ..
acceptopenjdk μ΄λ―Έμ§κ° μλνλ μ΄μ λ λλ½λ glibc λΌμ΄λΈλ¬λ¦¬κ° ν¬ν¨λμ΄ μκΈ° λλ¬Έμ λλ€. μνμΈ λ¦¬λ μ€λ μμ ν glibcμ λν κ²½λ λμμΈ 'musl glibc'λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€. aws cli v2 λ°μ΄λ리λ muslμμ μλνμ§ μμΌλ©° μλνλ €λ©΄ λΌμ΄λΈλ¬λ¦¬κ° λͺ κ° λ νμν©λλ€.
Java μ΄λ―Έμ§λ₯Ό μ¬μ©νλ λμ μλ Dockerfileμ Alpine Linuxμμ AWS CLI v2λ₯Ό μ€ννλ λ°©λ²μ μλ‘ μ¬μ©ν μλ μμ΅λλ€.
νμ‘°κ°
μμ λ΄μ©μ glibc λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€μ΄λ‘λνκ³ AWS CLI v2λ₯Ό λ€μ΄λ‘λ λ° μ€μΉνλ©° μλ μμ±κ³Ό κ°μ΄ νμνμ§ μμ μλ μλ μΌλΆ νλͺ©μ μ κ±°ν©λλ€. κ²°κ³Ό μ΄λ―Έμ§μ ν¬κΈ°λ μ½ 100MBμ λλ€.
μ΄ μ‘°μ μ glibc λ²μ μ νλ μ½λ©νμ§ μμΌλ €λ©΄ μλμΌλ‘ μ΅μ λ²μ μ κ°μ Έμ΅λλ€.
FROM alpine
# install glibc compatibility for alpine
RUN apk --no-cache add \
binutils \
curl \
&& GLIBC_VER=$(curl -s https://api.github.com/repos/sgerrand/alpine-pkg-glibc/releases/latest | grep tag_name | cut -d : -f 2,3 | tr -d \",' ') \
&& 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/*
Alpine Linuxμμ AWS CLI v2λ₯Ό μ€ννλ λ°©λ²μ μλ‘ μλ Dockerfileμ μ¬μ©ν μλ μμ΅λλ€.
μ 곡λ Dockerfile/scriptλ μλνμ§λ§ μλμ λ°©ν΄νμ§ μλ μ΄ μ€λ₯λ₯Ό νμν©λλ€.
aws/install: line 78: /aws/dist/aws: not found
μ΄μνκ²λ apk add mandoc
μ§μ μ aws/install
νλ©΄ μ΄ μ€λ₯κ° νμλμ§ μμΌλ©° μ€μΉ ν ν΄λΉ ν¨ν€μ§λ₯Ό μμ ν΄λ μλ¬΄λ° μν₯μ΄ μμ΅λλ€. μμμ λ€λ₯Έ ν¨ν€μ§λ μ΄λ¬ν λ³΄νΈ ν¨κ³Όκ° μλ κ² κ°μ΅λλ€.
μ΄κ²¬μλ μ¬λ?
PS apk add less
λ aws help
κ° μ¬λ°λ₯΄κ² μλνλ λ° νμν©λλ€(κ·Έλ μ§ μμΌλ©΄ groff
ν¨ν€μ§ λλ½μ λν΄ λΆνν©λλ€).
κ°μ₯ μ μ©ν λκΈ
acceptopenjdk μ΄λ―Έμ§κ° μλνλ μ΄μ λ λλ½λ glibc λΌμ΄λΈλ¬λ¦¬κ° ν¬ν¨λμ΄ μκΈ° λλ¬Έμ λλ€. μνμΈ λ¦¬λ μ€λ μμ ν glibcμ λν κ²½λ λμμΈ 'musl glibc'λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€. aws cli v2 λ°μ΄λ리λ muslμμ μλνμ§ μμΌλ©° μλνλ €λ©΄ λΌμ΄λΈλ¬λ¦¬κ° λͺ κ° λ νμν©λλ€.
Java μ΄λ―Έμ§λ₯Ό μ¬μ©νλ λμ μλ Dockerfileμ Alpine Linuxμμ AWS CLI v2λ₯Ό μ€ννλ λ°©λ²μ μλ‘ μ¬μ©ν μλ μμ΅λλ€.
μμ λ΄μ©μ glibc λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€μ΄λ‘λνκ³ AWS CLI v2λ₯Ό λ€μ΄λ‘λ λ° μ€μΉνλ©° μλ μμ±κ³Ό κ°μ΄ νμνμ§ μμ μλ μλ μΌλΆ νλͺ©μ μ κ±°ν©λλ€. κ²°κ³Ό μ΄λ―Έμ§μ ν¬κΈ°λ μ½ 100MBμ λλ€.