docker 컨테이너 내에서 apt-get update를 실행하면 member 'control.tar': lzma error: Cannot allocate memory
.
속도:
Debian(bookworm) docker(슬림) 컨테이너를 시작합니다.
로컬로 빌드된 deb 패키지 파일 세트를 실행 중인 컨테이너에 복사합니다.
로컬로 복사된 파일을 기반으로 로컬 deb 저장소 생성
cd /tmp/local && dpkg-scanpackages -m . > Packages
echo 'deb [trusted=yes] file:/tmp/local /' > /etc/apt/sources.list.d/00_local.list
apt-get --yes update
위 명령은 메시지와 함께 실패합니다.
dpkg-deb (subprocess): decompressing archive './xyz_amd64.deb' (size=12723480) member 'control.tar': lzma error: Cannot allocate memory
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
dpkg-deb: error: tar subprocess returned error exit status 2
dpkg-scanpackages: error: couldn't parse control information from ./xyz_amd64.deb
이 문제는 모든 컴퓨터에서 발생하지는 않습니다. 100개가 넘는 기계 중 2개에 나타납니다. 여유 메모리가 많은 것 같습니다.
편집 1: 세 개의 다른 컴퓨터에서 동일한 문제가 보고되었습니다.
- 6.1.21.1 - 마이크로소프트 표준 - WSL2+
- 5.4.8-1.el7.elrepo.x86_64(센토스 7)
- 5.15.0-76-유니버설(Ubuntu 20.04)
답변1
문제는 Docker 20.10.8 및 20.10.9의 clone3 시스템 호출 호환성입니다. 해결 방법은 버전 20.10.10 이상으로 마이그레이션하는 것입니다.2010년 10월 20일 출시 노트. 그렇지 않은 경우에는 다음 방법을 사용해야 할 수도 있습니다.해커 W/A
242 clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7fac716e4990, parent_tid=0x7fac716e4990, exit_signal=0, stack=0x7fac70ee4000, stack_size=0x7fff80, tls=0x7fac716e46c0} <unfinished ...>
243 brk(NULL <unfinished ...>
242 <... clone3 resumed>, 88) = -1 EPERM (Operation not permitted)