ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MongoDB] Docker로 MongoDB 사용하기
    개발 환경/DataBase 2020. 7. 22. 19:52
    반응형

    소마 프로젝트에서 mongoDB를 사용한다. 그래서 공부를 시작했다.

    0. 계획?

    MongoDB를 사용하기 위해서는 서버와 클라이언트가 같은 내부망에 존재해야 한다. 그러므로 두개의 컨테이너를 만들고 링크로 연결해준다.

    또한 컨테이너는 제거하면 컨테이너 내부의 데이터는 사라지기 때문에 컨테이너를 구동한 로컬과 볼륨을 마운트시켜야 한다.

    • MongoDB server (로컬의 볼륨과 마운트를 시켜야함.)
    • MongoDB client (서버와 연결되어 있어야함.)

     

    1. MongoDB server 컨테이너 구동

    docker run --name mongodb-server -d -v ~/data:/data/db mongo

    내용을 하나씩 살펴보자.

    • run : 컨테이너 실행
    • --name mongodb-server : 컨테이너의 이름을 mongodb-server로 지정. (다른 컨테이너와 연결할 때 사용)
    • -d : detached mode. 백그라운드 실행
    • -v ~/data:/data/db : 컨테이너를 구동하는 로컬 컴퓨터의 ~/data라는 디렉토리와 컨테이너 내부의 /data/db라는 디렉토리를 마운트 시킨다. MongoDB의 데이터는 /data/db에 저장된다.
    • mongo : 옵션들을 지정한후 나오는 argument는 docker image의 이름이다. 즉 mongo라는 image를 사용한다. 아마 로컬에 mongo image가 없을 것이므로 바로 dockerhub에서 pull을 시작한다.(다운로드)

    output:

    476802f44232ebf41ab7ede6769bba840bd46217024b4f7193f8f4e0f97d2acc

    현재 로컬 컴퓨터에 mongo image가 있어서 위와 같은 로그만 출력되었다.

     

    2. MongoDB client 컨테이너 구동

    docker run -it --name mongodb-client --link mongodb-server:mongo mongo /bin/bash

    내용을 살펴보자.

    • -it : 맨위에 보면 bash를 실행한다. 컨테이너에서 터미널을 사용하기 위해서는 이 옵션을 달아줘야한다.
    • --name mongodb-client : 컨테이너 이름
    • --link mongodb-server:mongo : client는 server와 연결되어 있어야 하므로 위에서 만든 컨테이너의 mongo와 link 옵션으로 연결해준다.
    • mongo : 이미지 이름
    • /bin/bash : bash를 실행한다. 즉 터미널을 킨다?

    output:

    root@565a83e8b986:/#

    이렇게 bash가 실행된다.

     

    3. MongoDB server 컨테이너로 접속

    컨테이너로 접속하기 위해서는 server 컨테이너의 IP 주소와 mongoDB가 사용중인 port 번호를 알아야 한다. 두가지 환경변수로 알 수 있다.

    • MONGO_PORT_27017_TCP_ADDR
    • MONGO_PORT_27017_TCP_PORT
    echo $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT

    output:

    172.17.0.2:27017

    IP와 port를 알아냈으니 접속해보자.

    mongo 172.17.0.2:27017

    output:

    MongoDB shell version v4.2.8
    connecting to: mongodb://172.17.0.2:27017/test?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("0978f54f-3e8b-4001-b1c5-ac96e415e11b") }
    MongoDB server version: 4.2.8
    Welcome to the MongoDB shell.
    For interactive help, type "help".
    For more comprehensive documentation, see
    	http://docs.mongodb.org/
    Questions? Try the support group
    	http://groups.google.com/group/mongodb-user
    Server has startup warnings:
    2020-07-23T03:15:30.673+0000 I  CONTROL  [initandlisten]
    2020-07-23T03:15:30.673+0000 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
    2020-07-23T03:15:30.673+0000 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
    2020-07-23T03:15:30.673+0000 I  CONTROL  [initandlisten]
    ---
    Enable MongoDB's free cloud-based monitoring service, which will then receive and display
    metrics about your deployment (disk utilization, CPU, operation statistics, etc).
    
    The monitoring data will be available on a MongoDB website with a unique URL accessible to you
    and anyone you share the URL with. MongoDB may use this information to make product
    improvements and to suggest MongoDB products and deployment options to you.
    
    To enable free monitoring, run the following command: db.enableFreeMonitoring()
    To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    
    >

    정상적으로 작동되었다.

     


    출처:

    jeonghwan-kim.github.io/도커에서-몽고디비-컨테이너-사용하기/

    반응형

    '개발 환경 > DataBase' 카테고리의 다른 글

    [MongoDB] Ubuntu 18.04에 설치  (0) 2020.07.22
Designed by Tistory.