본문 바로가기
개발 이야기/NoSQL

Mongodb를 Docker Container로 띄우기

by 농개 2018. 12. 29.
반응형

Mongodb를 Docker Container에 띄워보자.


먼저 Docker Image를 다운로드 하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
jckang@jckang:~$ docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
b849b56b69e7: Pull complete 
42986ef25bcd: Pull complete 
d927c1b717ec: Pull complete 
15b86ea20233: Pull complete 
95dc958d65c6: Pull complete 
aec60d69dd50: Pull complete 
bf92a6681913: Pull complete 
8911fe7d4b35: Pull complete 
8ce44114b060: Pull complete 
1a944a194d13: Pull complete 
5519cf0ef45d: Pull complete 
6c688677ac8e: Pull complete 
2f147ac236bb: Pull complete 
Digest: sha256:083e534e9dd3a61cabb31546e9eabf507b7ef6b061e511d16f2eb22664db9e72
Status: Downloaded newer image for mongo:latest
jckang@jckang:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              7177e01e8c01        4 hours ago         393MB
 
cs


docker pull 명령어로 mongo 이미지를 다운로드 받았다.

docker images 명령어로 확인까지.


1
2
3
4
5
jckang@jckang:~$ docker run --name mongo-server -d mongo
495526a2426c2f95e00d1d08419c1cf2dc2588d8a87934c5645778fb6e4788fc
jckang@jckang:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
495526a2426c        mongo               "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds        27017/tcp           mongo-server
cs


docker run 으로 다운받은 이미지를 컨테이너로 띄워보자.

(--name : 컨테이너명 지정, -d 또는 --detach : 백그라운드로 띄움)

docker ps 로 정상적으로 띄워졌는지 확인.



1
2
3
4
5
6
7
jckang@jckang:~$ docker exec -it mongo-server bash
root@495526a2426c:/# ls
bin  boot  data  dev  docker-entrypoint-initdb.d  etc  home  js-yaml.js  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@495526a2426c:/# ps -ef | grep mongo
mongodb      1     0  1 05:25 ?        00:00:00 mongod --bind_ip_all
root        53    42  0 05:26 pts/0    00:00:00 grep --color=auto mong
 
cs


docker exec 로 컨테이너에 bash로 접속해보자

그리고 ps -ef | grep mongo 로 mongo 서비스가 실행중인지 확인.


1
2
3
4
5
6
7
jckang@jckang:~$ docker logs mongo-server 
2018-12-29T05:25:30.905+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2018-12-29T05:25:30.912+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=495526a2426c
2018-12-29T05:25:30.913+0000 I CONTROL  [initandlisten] db version v4.0.5.
...(생략)
...
 
cs


다른 방법으로는 docker logs 명령어로 로그를 확인할 수 있다.(실시간으로 볼려면 -f 옵션 사용하면 됨)



마지막으로 로컬에서 접속 가능한지 테스트 하기 위해 간단한 파이썬 플라스크 app을 실행 시켜보자.

아래와 같이 app.py를 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
from pymongo import MongoClient
 
app = Flask(__name__)
 
client = MongoClient(host='localhost',
                    port=27017
                    )
db = client['test']
 
print(db)
 
app.run(host='0.0.0.0', port=5000)
cs


그리고 실행 시켜보자.


1
2
3
4
5
6
7
Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), u'test')
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
cs


연결이 잘되는 걸 확인 할 수 있다.

만약 연결 안된다면, docker container 종료시킨뒤(docker rm -f mongo-server)

포트 지정해서 다시 띄워보자(docker run --name mongo-server -d -p 27017:27017 mongo)



반응형

'개발 이야기 > NoSQL' 카테고리의 다른 글

MongoDB, docker-compose로 띄워보기  (0) 2024.02.14
Redis를 Docker Compose 로 띄우기  (0) 2021.01.22
Mongodb(Docker container) Volume 설정  (0) 2018.12.29