도커 - 실습해보기

도커를 알아가면서 아직은 별 기능이 없는 nginx 이미지로만 실습을 해보니 재미가 없었죠?
이번에는 실제 쓸만한 서버 소프트웨어를 배포해보면서 도커의 가장 중요한 옵션을 알아보려 해요.


메모 서비스 배포하기

설치해 볼 것은 Memos라는 서버 소프트웨어에요. 이 서비스를 배포하면 브라우저에서 개인 메모를 작성하거나 일정을 관리할 수 있게 돼요. 이건 제 개인적으로도 마음에 들어서 직접 운영하고 있는 서비스이기도 해요.

설치를 위해서 다음의 명령어를 실행해 보세요.

docker run \
  -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos/:/var/opt/memos \
  neosmemo/memos:stable

실행이 완료되면, 브라우저에서 http://서버의_아이피:5230 으로 접속해 주세요.

그러면 이렇게 회원가입 화면이 나타나게 돼요. 원하는 아이디와 비밀번호를 입력하고 가입해 주세요.

로그인을 하면 이렇게 멋진 메모 화면이 나오게 돼요.

축하드려요 :partying_face: 이제 제대로 된 서버 소프트웨어를 배포하신 거예요.
도커의 힘이 느껴지지 않나요? 명령어 한 번으로 이렇게 좋은 서버 소프트웨어를 배포했으니까요.

이번에 사용한 docker run 의 옵션들은 다음과 같아요.

  • -d - 백그라운드에서 실행
  • --name memos - 컨테이너의 이름을 memos 로 지정
  • -p 5230:5230 - 호스트(서버 컴퓨터)의 5230 포트를 컨테이너의 5230 포트와 연결
  • -v ~/.memos/:/var/opt/memos - 호스트(서버 컴퓨터)의 ~/.memos/ 경로를 컨테이너의 /var/opt/memos 의 경로로 마운트

마지막을 제외한 옵션들은 이전 가이드에서 이미 다뤘었죠? -v(--volume) 옵션은 도커를 사용하면서 가장 중요한 옵션이에요. 이를 좀 더 자세히 살펴볼게요.


컨테이너의 데이터 유지하기

도커 컨테이너 내부의 모든 데이터는 임시적(Stateless) 이라는 특성을 가져요. 이는 컨테이너를 삭제하면 모든 데이터가 사라지게 된다는 의미에요. 그런데 운영 중인 서버가 중단될 때 모든 데이터를 잃으면 큰일이겠죠? Memos에서 내가 작성한 메모와 일정들이 사라지면 안되니까요.

그래서 도커는 컨테이너의 중요한 데이터를 유지할 수 있도록 볼륨(-v) 옵션을 제공해요. 이 옵션을 사용하면 컨테이너의 일부 데이터를 호스트에 보관할 수 있게 되는데, 이러면 컨테이너가 삭제되더라도 데이터가 안전하게 유지되게 돼요.

이 옵션의 사용법은 다음과 같아요.

-v 호스트_경로:컨테이너_경로

도커 컨테이너는 일종의 가상 컴퓨터라 말씀드렸죠? 그래서 서버 컴퓨터와 마찬가지로 비슷한 파일 시스템 구조를 가지고 있어요. 옵션에는 호스트의 경로와, 컨테이너의 경로를 각각 지정하도록 되어 있는데, 이러면 컨테이너가 자신의 해당 경로에 파일을 생성하면 실제 파일은 호스트에 기록되게 돼요.

다시 실행했던 -v ~/.memos/:/var/opt/memos 명령어를 살펴볼게요. 옵션에서 ~/.memos/는 호스트인 서버 컴퓨터의 경로이고 뒤의 /var/opt/memos는 컨테이너에서 Memos 가 데이터를 기록하는 경로에요. 여러분의 계정 정보나 작성한 메모, 업로드한 파일이 이곳에 위치하게 될 거예요.

이번에는 다음 명령어를 통해 호스트의 저장 경로로 이동하고 파일 목록을 확인해 보세요.

cd ~/.memos
ls -al

그럼 이렇게 Memos 가 생성한 파일의 목록들을 볼 수 있어요.


검증해보기

이번에는 다음의 명령어를 통해 Memos 컨테이너를 삭제하고 다시 생성해 보세요.

docker stop memos
docker rm memos

docker run \
  -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos/:/var/opt/memos \
  neosmemo/memos:stable

그 다음엔 다시 http://서버의_아이피:5230 으로 접속해 보세요.

-v 옵션으로 기존 데이터를 제공했기 때문에 서버가 초기화되지 않고 기존에 가입된 계정 정보와 메모들까지 잘 유지되어 있을 거예요. 이 데이터를 잘 보관한다면 앞으로 서버를 다른 컴퓨터로 이전하더라도 쉽게 복원할 수 있어요.

이번엔 다음의 명령어로 컨테이너를 중단한 다음 ~/memos 경로를 삭제하고 다시 생성해 보세요.

docker stop memos
docker rm memos
sudo rm -rf ~/.memos

docker run \
  -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos/:/var/opt/memos \
  neosmemo/memos:stable

그 다음엔 다시 http://서버의_아이피:5230 으로 접속해 보세요.

이번엔 활용할 기존 데이터가 없기 때문에 Memos를 최초 설치했을 때의 화면이 나오게 돼요. 만약 무언가가 잘못돼서 서버의 데이터 초기화가 필요하다면 이 방법을 사용할 수 있어요.