docker + ubuntu 레포지토리 문제점 정리

Roharui·2023년 5월 29일
0

사내에서 오래된 php 프로젝트를 docker에 올리기 위해 dockerfile을 만들던 도중 발생하던 문제점 정리

1. 패키지 부재

개발시 사용했던 Apple Slicon chip은 arm 아키텍처를 사용하고 있어, 실제 패키지가 존재하지 않던 문제점이 있었다.

여러 ubuntu 레포지토리와 미러를 확인하면서 해당 패키지가 있는지 없는지 찾아봐야 했다.

실제로 https://packages.ubuntu.com/ 를 많이 이용한다고는 하는데.

이 사이트는 20.04 버전 패키지 밖에 검색하지 못한다.
레거시 프로젝트는 14.04를 사용하고 있었다.

결국 하나하나 찾을수 밖에 없었다.
레포지토리 링크 뒤에 /dists를 붙이면 이 레포지토리가 어떤 패키지를 가지고 있는지 확인이 가능했고 결국 해당하는 레포지토리를 찾아내서 해결할수 있었다.

/dists/<ubuntu 버전 명>/main/binary-arm64가 존재하는지 확인한 뒤, 해당 레포지토리를 apt에 추가하였다.

추가 방법은 이 문서 참고

2. hash sum mismatch

이 에러는 설치, 업데이트 도중 발생하던 문제점인데, 실행에 따라 되는 경우가 있고 안되는 경우가 있었다.

원인을 찾아본 결과 이런 내용을 확인했다.

apt 저장소 메타데이터는 최상위 파일이 다른 저장소 메타데이터의 체크섬을 포함하는 방식으로 구성됩니다.

Hash sum mismatch 오류는 apt가 다운로드한 리포지토리 메타데이터에 대해 체크섬을 실행했으며 
계산된 체크섬 apt가 최상위 파일에 나열된 체크섬과 일치하지 않음을 사용자에게 나타냅니다.

불행히도 부적절한 버그로 인해 lzma(.xz 파일)로 압축된 메타데이터 파일이 
잘못 다운로드되어(경우에 따라) 파일이 손상되는 경우가 있습니다.

결과적으로 손상된 파일의 체크섬이 잘못되어 "Hash sum mismatch" 오류가 발생하기 쉽습니다.

결론적으로 다운로드된 데이터중에 손상된 데이터가 있고, 그 손상된 데이터가 있으니 다운로드를 중지하는게 원인이라고 한다.

근본적인 원인을 수정하는건 어렵다고 판단해 결국 레포지토리를 다른 곳으로 옮기는 것을 선택했다.

실제로 해당 오류는 레포지토리를 가까운 곳으로 옮기는 것으로 해결되는 경우가 있다고 한다.

카카오, 다음등의 우분투 미러 레포지토리로 옮겨 문제점을 해결하고자 했지만 1번 문제점이 다시 발생했다.

3. docker platform

arm 패키지가 있는 곳으로 레포지토리를 옮기면 2번 문제가 발생하고
hash sum mismatch를 해결하기 위해 국내 레포지토리로 옮기면 1번 문제가 발생한다.

둘중 하나의 해결방법만을 선택해야하는데, 내가 선택한 것은 2번이었다.

docker에서 cpu 아키택처를 변경해 amd 아키택처 컨테이너를 올려 해결하였다.

docker build -t <이미지 > --platform=linux/amd64 .

운영 서버와 개발 서버는 amd 아키택처를 사용하기에 문제점은 없지만 로컬 개발 환경이 arm이라 속도가 굉장히 느렸다.

일단 급한 불은 껐지만 속도에 대한 문제는 해결 방법이 필요할 것 같다.

profile
개발한다

0개의 댓글