인프라/Docker

[Docker] docker로 mongodb 서버환경 만들기

jwKim96 2020. 3. 9. 20:49

사용한 이미지

mongo:4

4.0.16 4.0:

  • 4.0.16-xenial
  • 4.0.16-windowsservercore-ltsc2016
  • 4.0.16-windowsservercore-1809

 

1. Mongo Image 다운로드

> docker pull mongo:4

mongo 4.0.16 버전 이미지를 docker repository에서 다운로드

 

 

 

2. Mongo image를 컨테이너에 올리기

> docker run --name mongodb -d -p 17017:27017 mongo:4

--name : 실행하는 컨테이너의 name=mongodb

-d : 백그라운드에서 실행

-p 17017:27017 : 호스트의 17017포트를 docker container의 27017포트로 연결(27017은 mongodb의 default port)

mongo:4 : mongo:4 이미지를 해당 컨테이너에서 실행하겠다.

 

3. Mongo를 올린 컨테이너의 bash에 접속

> docker exec -i -t mongodb base
----프롬프트 변경
>$ mongo

> : host 컴퓨터 프롬프트

>$ : docker container 프롬프트

 

docker exec : 외부에서 컨테이너로 명령을 전달하는 command

-i : container에 attach(접속)되어있지 않아도, Standard Input(stdin)을 유지.

-t : TTY 모드(pseudo-TTY)를 사용합니다. 라고 하는데, 이 옵션을 줘야 bash를 쓸수 있다고 한다.

----

mongo : mongo db로 접속

 

 

4. 관리자 계정 생성

 

># use admin

># docker container안에서 접속한 mongodb 프롬프트

use ~~ : ~~데이터 베이스를 사용한다.

(~~가 있으면 그대로사용, 없으면 바로 생성하여 사용한다)

admin Database를 선택

 

># db.createUser({
    user: "admin-name",
    pwd: "admin-password",
    roles: [ { role: "userAdminAnyDatabase", db: "adminDB" } ]
})

 admin-name : 관리자 계정생성 (이 부분은 본인의 아이디로 변경)

admin-password : 해당 계정 비밀번호(이 부분은 본인의 비밀번호로 변경)

roles : 해당 계정 권한 및 db

 

 

5. 일반 계정 생성

먼저, 관리자 계정을 생성한다.

>$ mongo -u "admin-name" -p "admin-password" -authenticationDatabaase "adminDB"

-u : 접속 계정

-p : 접속 계정 비밀번호

-authenticationDatabase : 해당 계정이 권한을 가진 DB

 

 

># use mydb
># db.createUser({
    user: "user-name",
    pwd: "user-password",
    roles: [ { role: "dbAdmin", "readWrite", db: "mydb"} ]
})

mydb에 user-name 유저를 생성한다.

 

 

 

참고한 좋은 블로그들..