Alpine Linux v3.11의 EOL이 조금 아픈 사연입니다.

5116 단어 Dockertech

👋v3.11 EOL 되기


2021년 11월 01일 알파인 v3.11. EOL이 된 것 같아요.
https://endoflife.date/alpine

🔍Dockkerhub에서 alpine 기반 이미지 업데이트 확인


샘플 노드.js
확인했습니다. 사진처럼 최근 업데이트가 진행됐습니다.

https://hub.docker.com/_/node?tab=tags

👀docker build 시 변경 사항


docker build에서 의존 관계를 검색하는 alpine의 포장 변경은 다음과 같습니다.
https://dl-cdn.alpinelinux.org/alpine/v3.11/main

https://dl-cdn.alpinelinux.org/alpine/v3.14/main

🧑‍💻컨디션


이번에 사용한 Docker file
FROM node:14.18.1-alpine

# tzdataは一部以外削除する
RUN apk add --no-cache curl tzdata libacl libattr && \
  cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
  apk del --purge tzdata

RUN apk add --no-cache --virtual .build-deps coreutils && \
  cp /bin/date /usr/local/bin/date && \
  apk del --purge .build-deps

ENTRYPOINT ["sh"]

😇명령이 움직이지 않았다


컨테이너 중에는 지금까지 아래GNUcoreutilsdate 명령이 사용됐다.
date +%Y/%m/%d --date '-1 days ago'
2021/11/09
build 이후의 그림에서 이동할 때 다음과 같은 오류가 발생했습니다.
date +%Y/%m/%d --date '-1 days ago'
Error loading shared library libutmps.so.0.1: No such file or directory (needed by /usr/local/bin/date)

원인을 찾다


alpine v3.14용 포장에 포함된 coreutils의 버전이 업데이트되었습니다.
v3.14의 coreutilshttps://alpine.pkgs.org/3.14/alpine-main-x86_64/coreutils-8.32-r2.apk.html
v3.11의 coreutilshttps://alpine.pkgs.org/3.11/alpine-main-x86_64/coreutils-8.31-r0.apk.html
coreutils-8.32-r2의 의존 관계를 자세히 살펴보니 오류 메시지에서 본 봉인과 유사하다.

https://alpine.pkgs.org/3.14/alpine-main-x86_64/utmps-0.1.0.2-r0.apk.html

🎉다 고쳤다


마지막으로 다음과 같이 Docker file을 수정하여 해결합니다.
FROM node:14.18.1-alpine

RUN apk add --no-cache curl tzdata libacl libattr && \
  cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
  apk del --purge tzdata

# utmpsが足りなかった依存パッケージ
RUN apk add --no-cache utmps && \
  apk add --no-cache --virtual .build-deps coreutils && \
  cp /bin/date /usr/local/bin/date && \
  apk del --purge .build-deps

ENTRYPOINT ["sh"]

📚잡담


GNUcoreutils의 date 명령을 사용했기 때문에 이런 해결 방법이 생겼다
BusiBoxdate 명령을 사용하여 회피할 수도 있습니다.
# BusyBox
date -d "1970.01.01-00:00:$(( $( date +%s ) - $(( 24 * 60 * 60 )) ))" +%Y/%m/%d
2021/11/09

# GNU
date +%Y/%m/%d --date '-1 days ago'
2021/11/09

좋은 웹페이지 즐겨찾기