라즈베리파이 Ubuntu 환경에서 MongoDB 도커 컨테이너 실행하기
서론
- 라즈베리파이 환경에서는 일반 PC 환경에서와는 다르게 MongoDB의 버전 문제를 해결해야한다.
- 라즈베리파이 4 모델에서는 MongoDB 5.0이 동작하지 않는다.
- 해결하지 않으면 실행중인 docker 가 종료되거나 재실행시 제대로 되지 않는다.
- 이 글에서는 이러한 문제를 해결하고, MongoDB 도커 컨테이너를 실행하는 방법을 설명한다.
docker logs {컨테이너명} 을 입력했을 때 나오는 메시지
WARNING: MongoDB requires ARMv8.2-A or higher, and your current system does not appear to implement any of the common features for that!
applies to all versions ≥5.0, any of 4.4 ≥4.4.19
see https://jira.mongodb.org/browse/SERVER-71772
see https://jira.mongodb.org/browse/SERVER-55178
see also https://en.wikichip.org/wiki/arm/armv8#ARMv8_Extensions_and_Processor_Features
see also https://github.com/docker-library/mongo/issues/485#issuecomment-970864306
개발 환경
- 하드웨어: 라즈베리파이 4B 8GB 모델
- OS: Ubuntu 22.04 LTS Server
본론
1. 도커 컨테이너에서 사용중인 MongoDB 버전 확인
sudo docker run --rm mongo mongod --version
WARNING: MongoDB requires ARMv8.2-A or higher, and your current system does not appear to implement any of the common features for that!
applies to all versions ≥5.0, any of 4.4 ≥4.4.19
see https://jira.mongodb.org/browse/SERVER-71772
see https://jira.mongodb.org/browse/SERVER-55178
see also https://en.wikichip.org/wiki/arm/armv8#ARMv8_Extensions_and_Processor_Features
see also https://github.com/docker-library/mongo/issues/485#issuecomment-970864306
- 해당 명령어를 입력시 현재 사용중인 mongo 이미지가 정상적으로 동작하는지 임시로 확인 가능하다.
- 만약 WARNING 같은 문장이 출력되면 정상적으로 동작하지 않는 것이다.
- 해당 명령어를 통해 4.4 버전 중 4.4.19 버전 이상은 호환되지 않는 것을 확인한다.
- 따라서 동작하는 가장 최신의 버전은 4.4.18 버전이다.
2. 사용 가능한 가장 최신 버전(4.4.18)의 MongoDB 버전을 활용하여 컨테이너 생성
sudo docker run -d --name {컨테이너 명} -p {사용할 외부포트}:27017 mongo:4.4.18
- 이렇게 하면 호환되는 최신 버전이 설치되어 제대로 실행될 것이다.
- 만약 제대로 실행되지 않는다면, 트러블 슈팅 1 참고
결론
- 각 하드웨어의 환경에 맞게 버전을 설치해야하며, 만약 올바르지 않으면 제대로 컨테이너가 생성되지 않는다.
- 도커에서 문제가 발생했을 때, 어떻게 대처해야 하는지와 그 해결방법을 설명했다.
요약
라즈베리파이에서 도커를 사용해 몽고디비 컨테이너를 생성하려 했을 때, 하드웨어 사양에 따른 도커 이미지의 버전이 각각 다르다는 것을 알게되었고, logs 명령어를 통해 문제 확인과 도커 이미지를 새로 받아서 적용하는 방법을 알게 되었습니다.
트러블 슈팅
트러블 슈팅 1
Unable to find image 'mongo:4.4.18' locally
docker: Error response from daemon: Head "https://registry-1.docker.io/v2/library/mongo/manifests/4.4.18": Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Fmongo%3Apull&service=registry.docker.io": dial tcp: lookup auth.docker.io on 127.0.0.53:53: read udp 127.0.0.1:50973->127.0.0.53:53: i/o timeout.
See 'docker run --help'.
- 도커가 외부 네트워크와 통신할 수 없어서 해당 버전의 이미지를 다운로드 하지 못한 것이다.
- 네트워크가 연결되었는지 ping 명령어로 확인하고, 다음 명령어를 추가해서 컨테이너를 생성한다.
sudo docker run -d --name {컨테이너 명} --dns 8.8.8.8 -p {사용할 외부포트}:27017 mongo:4.4.18
- DNS를 명시적으로 작성해서 인터넷 문제를 해결한다.
참고문헌
'개발 노트 > 세미나식 글쓰기' 카테고리의 다른 글
| 로컬 데이터베이스를 원격 데이터베이스로 확장하기 (0) | 2025.05.30 |
|---|