Develop/Docker

[Docker] MongoDB가 설치된 우분투 이미지 만들기(feat. commit)

Gr00t 2021. 2. 5. 09:45

목표

도커 우분투 이미지로 컨테이너를 생성하고 생성된 이미지에 mongo DB를 설치해 ubuntu:mongodb 이미지를 작성한다.


컨테이너 실행

docker run -it [container] [image]

도커 우분투 이미지를 실행시켜 mongo DB를 설치할 컨테이너를 생성하도록 하자.

docker run -it --name ubuntu_mongo ubuntu /bin/bash

설치 방법

패키지 업데이트

apt-get update

설치에 앞서 패키지 업데이트를 진행한다.

wget 설치

apt-get install wget

도커 이미지의 경우, 리눅스 이미지를 받아오면 wget명령도 없을 것이다. 없다고 뜨는 것들은 설치한다음 다시 진행해주면 된다.

패키지 매니저 시스템을 사용해 공개키 받아오기

wget -qO - [https://www.mongodb.org/static/pgp/server-4.4.asc](https://www.mongodb.org/static/pgp/server-4.4.asc) | sudo apt-key add -

  • OK라는 메시지가 출력되면 제대로 받았다는 의미다.

  • gnupg 관련 오류 발생시

    다음과 같은 에러를 만난다면 apt-get install gnupg를 실행한고 다시 받아온다.

Mongo DB 를 위한 리스트 파일 생성

서비스를 정상동작시키기위해서 본인의 아키텍쳐 시스템을 arch의 인자로 준 명령을 입력해 리스트 파일을 생성한다.

제대로 받아왔다면 /etc/apt/sources.list.d/폴더에 mongodb-org-4.4.list파일이 생기고 그 안에 echo명령의 인자로 주었던 문자열이 들어가 있음을 볼 수 있다.

패키지 업데이트

apt-get update

몽고디비 설치

apt-get install -y mongodb-org


init 시스템 확인

공식 설치 가이드에서는 사용자의

init system

에 따라 명령이 다르기때문에 먼저 init system을 확인할 것을 당부하고 있다. 따라서 ps --no-headers -o comm 1명령을 통해서 systemdinit중에서 본인의 init system을 확인하고 몽고디비를 시작해야한다.

  • 도커 이미지에서 해당 명령을 실행할 경우, systemdinit이 아닌 bash로 뜬다. 이럴 경우 아래와 같이 파일을 추가해줘야 제대로 동작한다.

    1. mongodb github(링크)에서 파일의 내용을 복사한다.

    2. /etc/init.d/mongod파일을 만들고 복사한 내용을 붙여넣는다.

    3. mongod파일의 권한을 chmod 755 mongod명령을 통해 755로 설정한다.

  • (추가) 이는 도커가 init process를 실행하지 않기 때문이라고 한다. init process를 추가하고 싶다면 도커 허브에 나와있는 공식 이미지의 사용법을 잘 읽어보자.

몽고디비 시작

디비를 시작하는 방법은 앞서 init system 설정에서 얘기했듯이 두 가지 명령어로 나뉜다.

각 명령어에 따라 인자 순서도 달라지니

반드시 확인하고 실행하도록 하자.

시작

  1. systemctl start mongod

    • systemctl이 없다면 apt-get install systemctl로 설치한다.
  2. service mongod start

상태확인

  1. systemctl status mongod

  2. service monod status

종료

  1. systemctl stop mongod

  2. service mongod stop

재시작

  1. systemctl restart mongod

  2. service mongod restart

systemctl로 실행한 경우

service로 실행한 경우

Mongo Shell 입장

mongo

제대로 설치가 됐다면 mongo명령을 입력했을때 제대로 쉘이 시작되는 것을 볼 수 있다. 쉘이 시작되지 않고 끝난다면 설치 과정에서 문제가 있었다는 것이므로 다시 설치를 진행하도록 하자.

mongo shell 화면


이미지 생성

docker commit [container] [image]

이제 우분투 이미지로 생성한 도커 컨테이너에 mongoDB 설치가 끝났다. exit명령으로 컨테이너에서 빠져나와 해당 컨테이너를 이미지화 시켜주면 모든 작업이 끝난다.

docker commit ubuntu_mongo ubuntu:mongodb

아래와 같이 mongo DB가 설치된 이미지를 볼 수 있다.

참조

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

https://jipro.tistory.com/45

Uploaded by Notion2Tistory v1.1.0