서버 환경에서 mongodb docker 설치

hyeok2·2023년 6월 26일
post-thumbnail


docker pull mongo
몽고db는 도커hub에서 확인 가능
docker images
다운로드 한 도커 이미지를 확인한다.

몽고 db docker 컨테이너 생성 및 실행

참고
https://poiemaweb.com/docker-mongodb

docker run --name mongodb-container -v /root/data:/data/db -d -p 26697:27017 mongo
현재 가용가능한 포트가 한정되어있어 26697 포트로 몽고db 컨테이너를 열게되었다.

포트 상태 확인 및 해당포트 프로세스 종료

sudo lsof -i:26697
26697포트를 점유하고 있는 프로세스를 확인
sshd만 점유하고 있기때문에 해당 프로세스를 죽여준다.
sudo kill 14503 (PID)를 이용하여 kill

(base) [root@localhost ~]# docker run --name mongodb-container -v /root/data:/data/db -d -p 26697:27017 mongo
2b1a50b976ff1f019b8f38b6762cb9582114e5ea87c8bc0b56af90acd63c8a39

  • --name mongodb-container 도커이미지를 만드는데 몽고디비컨테이너라는 이름으로 만든다.
  • -v /root/data:/data/db : 마운트를 연결해준다. 이작업을 하지 않으면 도커에서 실행한 내용들이 도커가 삭제되면서 사라지게된다. (도커에서는 ~ 과같이 홈을 인식하지 못하기때문에 전체 경로를 입력해줘야한다.)


몽고 db 5+ 는 AVX지원을 해야하는데 해당 서버에서는 없기에 사용이 불가능하다...고 생각했는데

cat /proc/cpuinfo 를 이용해서 확인한 결과 가능한것으로 보인다..
그럼 뭐가 문제인가?
몽고db 공식사이트를 본다.
https://www.mongodb.com/docs/manual/administration/production-notes/#x86_64

https://jira.mongodb.org/browse/SERVER-54407
https://www.mongodb.com/community/forums/t/mongodb-5-0-cpu-intel-g4650-compatibility/116610/2
https://github.com/docker-library/mongo/issues/485#issuecomment-891991814


설명대로 glibc를 업데이트해본다.

-> 실패..


docker run -d -p 26697:3306 -e MYSQL_ROOT_PASSWORD=[패스워드] --name [이름] -v /root/mysql/data:/var/lib/mysql mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
일단 db를 만들어보는게 중요하다고 판단하였기에 mysql로 시도하고 이후에 mongodb를 시도하도록한다...


원인: cpu

WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!

해당 서버에서는 몽고db 5.버전부터 필요한 기능을 지원하지 않음으로서 발생하는 문제였다.
따라서 4.버전을 설치한다.

→ 아직 ACID하지 않을 때도 Single-Document Transaction을 제공하고 MongoDB 4.0부터는 Multi-Document Transaction을 제공함으로서 ACID를 충족했다.
이후 MongoDB 4.2에서 Shard Cluster Transacion을 제공하면서 분산 트랜젝션까지 가능해졌다.
따라서 4.2버전을 사용하도록 한다.

MONGODB 컨테이너 설치

  • docker pull mongo:4.2

  • docker run -d --name mongodb -p 26697:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root mongo:4.2
    (몽고 4.2버전을 몽고db라는 이름으로 26697포트에서 실행한다.)

  • docker start mongodb 방금 만든 도커를 실행한다.

  • docker exec -it mongodb /bin/bash : 몽고db 컨테이너에 접속해본다.

몽고db 컨테이너 확인을 위한 shell 다운

docker exec -it mongodb mongo -u root -p root --authenticationDatabase admin

show dbs

몽고 compass

잘 접속이 된다.

성공

https://kciter.so/posts/about-mongodb

https://bookfriend.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4Linux-CPU-%EC%BD%94%EC%96%B4-%EC%88%98-%ED%99%95%EC%9D%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95%EA%B8%B0%EB%B3%B8-%EC%98%B5%EC%85%98%EB%A7%8C

profile
땅을 파다보면 흙과 물을 보겠지만, 코드를 파다보면 답이 보일것이다.

0개의 댓글