HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍎
캠쿠
/
🛠
개발팀
/
Docker의 활용

Docker의 활용

Date
Dec 31, 2019
Align
State
finished

도커란?

 
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
 
서버에서 컨테이너란 우리가 평소에 생각하는 컨테이너와 같이 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포와 관리를 단순하게 해준다.
즉, Backend 프로그램, DB 서버, 메세지 큐등 어떤 프로그램도 컨테이너로 추상화가 가능하고, 조립PC, AWS, Azure, Google cloud등 어디서든지 실행할 수 있다.
 
또한 도커에서 컨테이너와 함께 가장 중요한 개념인 이미지는 컨테이너의 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 변하지도 않고(immutable), 상태값을 가지지 않는다. (상태값은 컨테이너가 가진다.)
예를 들어, ubuntu 이미지는 ubuntu를 실행하기 위한 모든 파일을 가지고 있다.
이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 추가로 무언가를 설치하거나 컴파일할 필요없이 그저 이미지를 다운받으면 되는 것이다.
 
도커는 컨테이너, 오버레이 네트워크(overlay network), 유니온 파일 시스템(union file systems)등과 같이 이미 존재하는 기술을 잘 조합하여 만든 오픈소스이다.
 

레이어 저장방식

notion image
서버 프로그램을 만들기위해 위와 같이 ubuntu, nginx, web app에 해당하는 이미지를 각각 받는다고 하면 처음에는 부담이 안되겠지만 이미지가 쌓이면 나중에는 이미지를 하나 받을 때마다 굉장히 비효율적으로 변할 것이다.
이를 해결하기 위해 레이어라는 개념을 활용하여 여러 레이어를 하나의 파일 시스템으로 사용하게 해주는 유니온 파일 시스템을 구현한다.
이미지는 여러 읽기 전용 레이어로 구성되고, 파일이 추가되거나 수정되면 새로운 레이어를 생성한다.
예를 들어 ubuntu 이미지를 기반으로 nginx 이미지를 만들면 ubuntu 이미지에 nginx 관련 레이어가 추가되고, 그 nginx 이미지를 기반으로 web app 이미지를 만든다면 기존 nginx 이미지에 web app source 관련 레이어들이 추가될 것이다. 이를 통해 굉장히 효율적으로 이미지를 관리할 수 있다.
 
컨테이너를 생성하게 되면 기존의 이미지 레이어들 위에 읽기/쓰기 레이어를 추가하여 컨테이너 내에서는 생성된 읽기/쓰기 레이어를 사용한다.
 
참고
초보를 위한 도커 안내서 - 도커란 무엇인가?
어느날 친구한테 메시지를 받았습니다. 도커 공부 좀 하려는데 hello world 문서 어떤 거 보면서 시작하는 게 좋음? 구글에서 docker 검색ㄱㄱ라고 말하려다 인터넷에 있는 도커 관련 글과 동영상 중에 입문자용 링크를 몇 개 전달해 주었습니다. 이후에도 몇 번 비슷한 요청을 받으면서 도커에 대해 가볍게 정리해보자라는 생각이 들었고 예전 글(도커를 이용한 웹서비스 무중단 배포하기) 과 밋업 때 발표했던 내용, 그리고 그동안의 사용경험을 모아 글을 작성하게 되었습니다.
초보를 위한 도커 안내서 - 도커란 무엇인가?
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 어떻게 활용했는가?

 
이번 시즌 3 프로젝트에서는 구글 클라우드에 ubuntu 18.04 버전으로 VM 인스턴스를 만들어 진행하였다.
 
ubuntu 18.04 버전에 도커를 설치하는 방법은 다른 곳에 잘 나와있기 때문에 따로 언급하지 않겠다.
 
시즌 3 프로젝트에서는 MongoDB를 사용하여 DB를 구축했는데, 이 MongoDB를 docker의 컨테이너에 넣어서 사용하였다.
 
  1. 이미지 받아오기
    1. 설치한 도커에 MongoDB 이미지를 다운 받는다.
      docker pull mongo
  1. 컨테이너를 만들고 구동
    1. docker run --name nameOfContainer -v /home/test/mongodb/db:/data/db -d -p 27017:27017 mongo
      • —name : 컨테이너 이름
      • -v : 볼륨을 외부와 연결
      • -d : 데몬으로 실행
      • -p : 외부 접속을 위해 포트연결
  1. Bash로 접근하여 Mongo 접속
    1. docker exec -it nameOfContainer bash
      mongo ⇒ MongoDB 서버 프로그램
 
참고
Docker에서 MongoDB 설치하기
최근 Spring boot에 사용자 로그 기록을 위해 MongoDB를 사용해야 했고, 이를 위해 Aws에서 Docker 기반에 MongoDB 환경을 구성하게 되었다.나중에 또 사용할 것 같아서 정리하여 포스팅을 하였다. 순서는 아래와 같이 진행하였다. 먼저 Docker에서 MongoDB 이미지를 받는다.공식 이미지이며 최신 버전을 받았다. docker pull mongo 받은 이미지를 통해 MongoDB를 구동하였다.아래의 명령어는 MongoDB 이미지를 수행하는 명령어이고 간단하게 풀어보면 다음과 같다.
Docker에서 MongoDB 설치하기
https://elfinlas.github.io/2019/02/11/docker-on-mongo/