도커 - 사람들이 겪던 문제들

가이드 목표:

  • 도커가 필요한 이유를 알아봐요.
  • 도커가 무엇인지 알아봐요.
  • 도커의 기본적인 사용법을 익혀요.
  • 도커를 통해 유용한 서비스를 배포해요.
  • 도커 컴포즈의 사용법을 익혀요.

필요한 것들:

  • 우분투가 설치된 서버
  • 리눅스 터미널의 기초 사용법
  • 공유기와 인터넷에 대한 이해

사람들이 겪던 문제들


우리가 컴퓨터에 소프트웨어를 설치할 때의 상황을 생각해 보세요. 보통은 앱스토어나 개발사 홈페이지에서 다운로드 받아서 간편히 설치하곤 하죠?

하지만 컴퓨터에서 소프트웨어가 제대로 동작하기 위해서는 생각보다 매우 험난한 조건이 따라요. 그래서 컴퓨터를 오래 사용한 분들은 다음의 예시 문제들을 겪어보셨을 거예요.

  • 이 구형 프로그램은 윈도우 7에서만 돌아가요.
  • 이 구형 프로그램을 윈도우 11에서 돌리려면 호환성 모드로 실행해야 해요.
  • 이 게임을 실행하려면 닷넷 8.0을 먼저 설치해야 해요.
  • 이건 맥에서는 설치 못해요.

이런 문제들이 생기는 근본적인 이유는 소프트웨어가 특정 OS와 의존 소프트웨어가 설치되었다는 기준으로 만들어지기 때문이에요. 그래서 모든 곳에서 동작하는 단 하나의 소프트웨어 실행 파일을 만든다는 것은 현실적으로 어려워요.

이 문제는 서버 소프트웨어로 가면 더 심각해지는데요. 서버 소프트웨어는 보통 단일 실행 파일이 없고 여러 소프트웨어의 조합으로 동작하게 돼요. 그래서 보통 설치 매뉴얼을 보면 이런 식으로 작성되어 있어요.

  • 우분투 22.04 배포판 버전에서만 동작합니다.
  • MySQL 8.0 버전과 함께 사용하세요.
  • OS에서는 이거 저거 설정을 바꾸세요.
  • 그 다음엔 이런 의존성 프로그램을 버전까지 맞춰서 설치하세요.
  • 이 소프트웨어는 이렇게 설정을 바꿔야 합니다.
  • 그 다음에야 우리 소프트웨어를 설치하세요.

이런 과정은 생각만 해도 머리가 아파오지 않나요? 우리가 원하는 건 쉽게 여러 서버 소프트웨어들을 컴퓨터에 설치하는 거예요. 그런데 소프트웨어마다 이런 복잡한 과정을 반복해야 한다면 정말 고통스러운 일이 되겠죠? 그리고 모든 소프트웨어가 한 컴퓨터에서 '조화롭게 잘 동작’하게 만든다는 건 정말 어려운 일이 될 거예요.


도커

도커는 앞서 설명한 것과 같이 기존 소프트웨어의 배포/설치 복잡성 문제를 해결하기 위해 태어났어요.

도커로 배포하는 소프트웨어는 이미지라는 단위로 배포되는데, 이는 OS + 의존성 + 소프트웨어 + 설정을 모두 포함하고 있어요. 그래서 사용자가 어떤 리눅스 환경을 사용하던 일관적인 동작을 보장할 수 있게 돼요. 이 이미지 덕분에 우리는 별도의 복잡한 과정을 거치지 않더라도 간편하게 소프트웨어를 설치할 수 있게 될 거예요.

flowchart LR;
subgraph server["서버"]
subgraph docker-1["도커 서비스 1"]
 docker-1-os["OS"]
 docker-1-app["App"]
end;
subgraph docker-2["도커 서비스 2"]
docker-2-os["OS"]
docker-2-app["App"]
end
subgraph docker-3["도커 서비스 3"]
docker-3-os["OS"]
docker-3-app["App"]
end
end;

도커로 배포되는 소프트웨어들은 일종의 격리된 가상 컴퓨터 환경이에요. 그래서 한 컴퓨터에서 수많은 소프트웨어가 동시에 구동되더라도 서로 영향을 미치지 않고 잘 동작할 수 있게 돼요. 그리고 격리된 환경인 덕택에 삭제도 간편해져요. 가상 환경만 지우면 소프트웨어가 깔끔하게 제거되거든요.

이외에도 수많은 기능이 있지만, 이 정도만 해도 도커가 멋져 보이지 않나요? 이제 우리가 해야 할 일은 원하는 소프트웨어의 이미지를 가져와서 실행만 시키면 되는 거예요. 다음 가이드부터는 실제로 도커를 설치해보고 기본적인 사용 방법을 익혀볼게요. 그럼 다음에 만나요! :waving_hand:

IT에서 이야기하는 가상 컴퓨터(Virtual Machine) 개념과 도커는 기술적으로 완전히 동일하진 않아요.
하지만 지금은 가상 컴퓨터라 이해하셔도 괜찮아요.