Alpine Linux 이미지(3.13 이후)를 Raspberry Pi의 Docker 환경에서 사용할 때 고려할 사항
개시하다
컨디션
무슨 일이 있었는지
apk 업데이트 실패
$ docker run -it alpine:latest sh
/ # apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/armhf/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.13/main: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: No such file or directory
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/armhf/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.13/community: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: No such file or directory
2 errors; 14 distinct packages available
데이터 실패
/ # date
Sun Jan 0 00:100:33238 1900
Alpine Linux 공식에
musl 1.2
musl has been upgraded to 1.2. This release changes the definition of time_t on 32-bit systems. See the musl time64 release notes for more details.
time64 requirements
The following important information applies for users of x86, armv7, and armhf (currently supported 32-bit architectures), including 32-bit Docker containers on 64-bit hosts.
(snip)
In order to run under old Docker or libseccomp versions, the moby default seccomp profile should be downloaded and on line 2, defaultAction changed to SCMP_ACT_TRACE, then --seccomp-profile=default.json can be passed to dockerd, or --security-opt=seccomp=default.json passed to docker create or docker run. This will cause the system calls to return ENOSYS instead of EPERM, allowing the container to fall back to 32-bit time system calls. In this case, the container will not be compatible with dates past 2038.
Alternatively,
--security-opt=seccomp=unconfined
can be passed with no default.json required, but note that this will reduce the security of the host against malicious code in the container.musl
라는 프로그램 라이브러리의 업데이트로 32비트 환경에서 시간과 관련된 규격 변경이 있을 것 같아서 이를 피하기 위해 --security-opt=seccomp=unconfined
라는 옵션docker run
을 추가할 수 있습니다.--security-opt=seccomp=unconfined
컨테이너는 안전등급이 낮아져 사용 시 주의가 필요하다.실제로 해봤어요.
apk 업데이트 성공했습니다.
$ docker run -it --security-opt=seccomp=unconfined alpine:latest sh
/ # apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/armhf/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/armhf/APKINDEX.tar.gz
v3.13.2-48-gab9fbf8bd8 [https://dl-cdn.alpinelinux.org/alpine/v3.13/main]
v3.13.2-47-gc4030f9597 [https://dl-cdn.alpinelinux.org/alpine/v3.13/community]
OK: 12247 distinct packages available
데이터도 성공했어요.
/ # date
Mon Mar 1 03:00:00 UTC 2021
docker-compose.그럼 어떡하지?
이런 느낌으로 갔어요.
services:
alpine:
image: alpine:latest
container_name: alpine
command: sh
tty: true
security_opt:
- seccomp=unconfined
총결산
Alpine Linux 이미지는 Raspberry Pi의 Docker 환경에서 올바르게 처리됩니다.랩버리피뿐만 아니라 32비트 환경에서 이번 대응을 하지 않으면 컨테이너를 제대로 사용할 수 없을 것 같다.
Have a happy tech life!
Reference
이 문제에 관하여(Alpine Linux 이미지(3.13 이후)를 Raspberry Pi의 Docker 환경에서 사용할 때 고려할 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/zilch/articles/d135dde85c6ac6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)