Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

csct3434

[도커 공식문서 학습] 4. 도커 핵심 개념 정리 - 컨테이너 본문

Docker

[도커 공식문서 학습] 4. 도커 핵심 개념 정리 - 컨테이너

csct3434 2025. 3. 27. 09:23

개요

웹 애플리케이션을 개발한다고 가정해 보겠습니다. 이 애플리케이션은 다음과 같은 세 가지 주요 컴포넌트로 구성됩니다:

  • React 프론트엔드
  • Python 기반 API
  • PostgreSQL 데이터베이스

이 프로젝트를 개발하려면 Node.js, Python, 그리고 PostgreSQL을 설치해야 합니다. 그런데 팀원들이 모두 같은 버전을 사용하고 있을까요? CI/CD 시스템이나 실제 프로덕션 환경에서도 동일한 버전을 유지할 수 있을까요? 버전 충돌이나 환경 설정 문제를 어떻게 해결할 수 있을까요?

이런 문제를 해결하는 것이 바로 컨테이너(Container) 입니다.

컨테이너란?

컨테이너는 애플리케이션의 구성 요소를 위한 격리된 프로세스입니다. 애플리케이션의 구성 요소(React 프론트엔드, Python API, 그리고 데이터베이스)는 각각의 컨테이너에서 동작하며, 호스트 시스템과 완전히 격리된 상태를 유지합니다.

컨테이너의 주요 특징은 다음과 같습니다:

  • Self-contained(자급자족): 컨테이너는 실행에 필요한 모든 라이브러리와 의존성을 포함하고 있어, 호스트 시스템에 사전에 설치된 환경에 의존하지 않습니다.
  • Isolated(격리): 컨테이너는 서로 격리된 환경에서 실행되며, 다른 컨테이너나 호스트 시스템에 영향을 최소화합니다.
  • Independent(독립성): 각 컨테이너는 독립적으로 관리되며, 한 컨테이너를 삭제해도 다른 컨테이너에는 영향을 주지 않습니다.
  • Portable(이식성): 컨테이너는 어디에서든 실행될 수 있습니다. 개발 환경에서의 컨테이너는 데이터 센터나 클라우드 환경에서도 동일하게 동작합니다.

컨테이너 vs. 가상머신(VM)

  가상머신 컨테이너
운영체제 개별 OS 포함 호스트 OS 공유
실행 방식 하이퍼바이저를 통해 독립적인 OS 실행 프로세스 격리 방식
리소스 사용량 높은 오버헤드 경량, 빠른 실행
시작 속도 느림 빠름

 

쉽게 말해, 가상머신은 커널, 하드웨어 드라이버, 프로그램, 애플리케이션을 포함하는 운영체제 입니다. 따라서 애플리케이션 하나를 격리시키기 위해 가상머신을 생성한다면 큰 오버헤드가 수반될 것입니다.

 

반면, 컨테이너는 단순히 애플리케이션 실행에 필요한 모든 파일만을 포함하는 격리된 프로세스입니다. 한 컴퓨터에서 실행 중인 모든 컨테이너들은 동일한 커널을 공유하고 있습니다. 이는 사용자가 더 많은 애플리케이션을 보다 적은 인프라 자원으로 실행할 수 있도록 해줍니다.

 

즉, 컨테이너와 가상머신은 격리된 환경에서 애플리케이션을 실행하기 위한 가상화 기술이지만, 가상머신은 운영체제(OS) 단위로 격리하고 컨테이너는 프로세스 단위로 격리하여 가볍고 빠르게 실행할 수 있습니다.

가상머신과 컨테이너를 함께 사용하는 경우

많은 클라우드 환경에서는 가상머신을 사용합니다. 하나의 애플리케이션을 실행하기 위해 컴퓨터를 직접 구성하는 대신 가상머신을 활용한다면, 하나의 가상머신에 여러 개의 컨테이너를 배포하여 리소스를 효율적으로 활용할 수 있습니다. 이를 통해 비용을 절감하고, 애플리케이션 배포 및 확장을 보다 유연하게 수행할 수 있습니다.

첫 번째 컨테이너 실행하기

이제 실제로 컨테이너를 실행해 보겠습니다. Docker Desktop을 사용하면 GUI 환경에서 손쉽게 컨테이너를 실행할 수 있습니다.

  1. Docker Desktop을 실행한 후, 상단 검색창에서 welcome-to-docker를 입력합니다.
  2. 검색 결과에서 Pull 버튼을 클릭하여 이미지를 다운로드합니다.
  3. 다운로드가 완료되면 Run 버튼을 클릭하여 컨테이너를 실행합니다.
  4. Optional settings를 확장하여 다음과 같이 설정합니다:
    • Container name: welcome-to-docker
    • Host port: 8080
  5. Run 버튼을 클릭하여 컨테이너를 시작합니다.

이제 첫 번째 컨테이너가 실행되었습니다! 🎉

실행 중인 컨테이너 확인하기

컨테이너가 정상적으로 실행되고 있는지 확인하려면 Docker Desktop의 Containers 탭에서 확인할 수 있습니다.

컨테이너로 웹 페이지 열어보기

컨테이너 내부에서 웹 서버가 실행 중이며, 이를 확인하려면 브라우저에서 다음 주소를 입력합니다:

http://localhost:8080

아래 페이지가 정상적으로 열린다면, 컨테이너가 올바르게 실행되고 있다는 의미입니다.

컨테이너 내부 탐색하기

Docker Desktop의 Containers 탭에서 실행 중인 컨테이너를 선택한 후, Files 탭을 클릭하면 컨테이너 내부 파일 시스템을 탐색할 수 있습니다.

컨테이너 중지하기

컨테이너는 수동으로 중지하지 않는 한 계속 실행됩니다. 컨테이너를 중지하려면:

  1. Docker Desktop의 Containers 탭으로 이동합니다.
  2. 실행 중인 컨테이너를 선택합니다.
  3. Stop 버튼을 클릭하여 컨테이너를 중지합니다.

원문

https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/

 

What is a container?

What is a container? This concept page will teach you about containers and provide a quick hands-on where you will run your first container.

docs.docker.com