< DevOps >/Docker

#5. MongoDB Docker 도커 이미지 설치하기 - 아직도 직접 설치하시나요? 시리즈

Chipmunks 2022. 2. 15.
728x90

 

안녕하세요, 다람쥐입니다.

오늘 소개할 도커 이미지는 몽고디비(MongoDB) 입니다.

몽고디비는 NoSQL 데이터베이스를 처음 공부할 때 많이 접하는 데이터베이스입니다.

오픈 소스에다 JSON 형태로 데이터를 받을 수 있으니 사용하기 편리한 데이터베이스 중 하나입니다.

 

1. 도커 프로그램 설치하기

아래 MySQL Docker 이미지를 설치할 때 소개드렸습니다. 아래 페이지를 참고해주시면 감사하겠습니다.
링크 : https://itchipmunk.tistory.com/450

 

#1. MySQL Docker 도커 이미지 설치하기 - 아직도 직접 설치하시나요? 시리즈

안녕하세요. 다람쥐입니다. 매 번 새 환경에서 MySQL 를 설치받는 것은 매우 귀찮은 일이었는데요~ 맥에서는 터미널로 이런저런 명령어를 쳐야하고, 윈도우에서도 설치 마법사로 설치하고 필요하

itchipmunk.tistory.com

 

2. MongoDB Docker 도커 이미지 설치하기

docker pull 명령어로 MongoDB 최신 버전의 이미지를 내려받을 수 있습니다.

또는 'mongo:latest' 으로 최신 버전을 직접 명시할 수 있습니다.

$ docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
08c01a0ec47e: Already exists 
ceb608a7cda7: Pull complete 
a160d3e3934a: Pull complete 
544b72923120: Pull complete 
812461eda79e: Pull complete 
3e1ac5db1dae: Pull complete 
801c92a93fab: Pull complete 
34e6068e2f4c: Pull complete 
2513dc6d2ec7: Pull complete 
d1ac55ebeb6f: Pull complete 
Digest: sha256:c7f5b78eead63e672176d4a6e0932f8649c8f727dec5acef6b9ed7c9bdc3dae5
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest

 

특정 버전의 MongoDB 도커 이미지는 MongoDB 도커 허브 페이지 Tags 메뉴에서 이미지 목록을 확인할 수 있습니다.

윈도우의 경우 2~3GB 사이이므로 이미지를 가져오기 전에 용량을 먼저 확인해주세요.

리눅스의 경우 200~300MB 정도로 윈도우에 비해 가벼운 용량입니다.

몽고디비 도커 태그 목록 페이지

 

만약 애플 실리콘 M1 칩셋을 사용 중이라 명령어 실행할 때 오류가 난다면

로제타로 터미널을 실행시켜주시거나

'--platform linux/amd64' 옵션을 추가로 넣어 실행해줍니다.

 

3. 내려 받은 MongoDB Docker 도커 이미지 확인

docker images 명령어로 내려 받은 MongoDB Docker 도커 이미지를 확인할 수 있습니다.

$ docker images
REPOSITORY                                TAG              IMAGE ID       CREATED         SIZE
mongo                                     <none>           29d9c9b800fa   13 months ago   493MB

 

또는 Docker for Desktop 프로그램에서 Images 탭에서도 확인할 수 있습니다.

 

4. 내려 받은 MongoDB 이미지로 도커 컨테이너 생성

MongoDB 도커 이미지를 내려받았으면 바로 MongoDB 도커 컨테이너를 만들어 봅시다.

 

# 기본값으로 생성
$ docker run --name some-mongo -v ~/data:/data/db -d -p 27017:27017 mongo

# 루트 계정 설정
$ docker network create some-network
$ docker run -d --network some-network --name some-mongo -v ~/data:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
    -e MONGO_INITDB_ROOT_PASSWORD=secret \
    -p 27017:27017 \
    mongo

 

로컬 컴퓨터의 ~/data 디렉터리에 데이터를 저장하기 위해 -v 옵션으로 로컬 컴퓨터의 디렉터리인 ~/data 디렉터리를

컨테이너가 가지는 /data/db 디렉터리에 마운트 했습니다.

 

MongoDB 도커 컨테이너 만들 시에 들어갈 환경 변수 목록 설명은 다음과 같습니다.

  • MONGO_INITDB_ROOT_USERNAME : 루트 계정으로 만들 계정의 이름입니다.
  • MONGO_INITDB_ROOT_PASSWORD : 루트 계정으로 만들 계정의 비밀번호입니다.
  • MONGO_INITDB_DATABASE : /docker-entrypoint-initdb.d/*.js 스크립트에서 생성되는 데이터베이스 명을 지정합니다. 몽고디비는 처음 저장할 때 데이터베이스가 신규 생성되는 특징이 있습니다. 

몽고디비 컨테이너를 처음 시작하면 특별한 작업이 실행됩니다.

바로 /docker-entrypoint-initdb.d 경로에 있는 .sh 파일 또는 .js 파일을 알파벳 순으로 실행한다는 점인데요.

.js 파일은 몽고디비가 실행하고

앞서 환경변수에서 설명한 MONGODB_INITDB_DATABASE 으로 지정한 데이터베이스에서 실행됩니다.

만약 환경변수가 없다면 test 이름으로 실행됩니다.

또는 .js 파일을 직접 수정하여 변경할 수도 있습니다.

 

마찬가지로 만약 애플 실리콘 M1 칩셋을 사용 중이라 명령어 실행할 때 오류가 난다면

로제타로 터미널을 실행시켜주시거나

'--platform linux/amd64' 옵션을 추가로 넣어 실행해줍니다.

 

5. 실행된 MongoDB 도커 컨테이너 확인

docker ps 명령어로 MongoDB 도커 컨테이너를 확인할 수 있습니다.

$ docker ps -a
CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                     PORTS                      NAMES
9d0f33c8d8b2   mongo                                 "docker-entrypoint.s…"   28 seconds ago   Up 25 seconds              0.0.0.0:27017->27017/tcp

 

 

6.  MongoDB 도커 컨테이너 시작 & 정지 & 재시작

아래 명령어로 MongoDB 도커 컨테이너를 시작하고 정지하고 재시작할 수 있습니다.

# MongoDB Docker 컨테이너 중지
$ docker stop some-mongo

# MongoDB Docker 컨테이너 시작
$ docker start some-mongo

# MongoDB Docker 컨테이너 재시작
$ docker restart some-mongo

 

7. MongoDB 도커 컨테이너에 접속

아래 명령어로 MongoDB 도커 컨테이너에 접속할 수 있습니다.

$ docker exec -it some-mongo bash

# mongo

 

8. docker-compose.yml 에 MongoDB 에 추가

docker.compose.yml 파일에 MongoDB 도커 이미지를 담으려면 아래와 같습니다.

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

 

이후 docker-compose up -d 명령어와 docker-compose down 명령어로 두 도커 이미지를 한 번에 올리거나 한 번에 내릴 수 있습니다.

 

다른 시리즈 글 보러 가기

 

댓글