본문 바로가기
Docker

[Docker] 도커 컨테이너란?

by NJ94 2024. 2. 6.

1. Docker(도커)

  • 애플리케이션을 개발/배포/실행 하기 위한 오픈소스 플랫폼
  • 컨테이너화 기술을 기반으로 하여 애플리케이션을 격리된 환경에 패키징하고 실행할 수 있도록 지원함

  • 장점
    • 가볍고 빠르게 생성됨, 호스트 시스템의 자원을 효율적으로 활용 가능
    • 개발/테스트/배포 환경 간의 일관성 있는 실행 환경을 제공하여 일관성 유지
    • 서버 확장이 용이
    • 배포가 쉬움
    • 다양한 언어/프레임워크 지원
  • 단점
    • 동일한  호스트 시스템을 공유 하기 때문에 보안 취약점 발생 위험
    • 컨테이너는 일시적이기 때문에 영구적인 데이터 저장이 필요한 경우 관리가 복잡할 수 있음
    • 호스트 시스템에 의존하기 때문에 호스트 환경에 따라 컨테이너에 영향을 미칠 수 있음

 

2. Docker는 클라이언트 서버 아키텍처를 사용

https://docs.docker.com/get-started/overview/

2.1 클라이언트(Client)

  • Docker CLI(Command Line Interface)를 통해 Docker를 관리하고 컨테이너를 생성/실행/중지/삭제하는 등의 작업을 수행한다. 
  • Docker Host와 통신하여 컨테이너를 관리
  • Docker Registry에서 이미지를 검색하고 다운로드 가능

 

2.2 도커 호스트 (Docker Host)

  • Docker 엔진을 실행하는 시스템을 말함, Docker daemon 이 실행되는 컴퓨터 또는 가상머신을 의미  
  • 컨테이너의 생성/실행/관리를 담당하며 클라이언트의 요청을 받아들여 해당 작업을 수행
  • 여러 개의 컨테이너를 동시에 실행 가능하며, 각 컨테이너는 호스트 시스템의 리소스를 공유하면서 독립적으로 실행됨

 

2.3 도커 레지스트리(Docker Registry)

  • Docker 이미지를 저장하고 공유하는 저장소
  • 클라이언트가 이미지를 검색하고 다운로드할 수 있도록 제공하며, 이미지의 업로드, 버전 관리 등도 가능
  • ex) Docker Hub
    https://hub.docker.com/

 

2.4 도커 이미지(Docker Image)

  • 애플리케이션을 실행하기 위한 파일 시스템과 실행할 애플리케이션에 대한 설정 등을 포함하는 패키지 
  • 여러 레이어로 구성되어 있음
    • ex) 도커 이미지안에는  Phtyon 레이어,  Redis 레이어가 구성되어 있음
    • 레이어는 읽기 전용이며 변경되지 않음
  • 이미지는 일종의 템플릿으로, 컨테이너를 생성하는 데 사용됨
    • 즉, 컨테이너는 이미지를 기반으로 생성되며, 이미지를 수정하면 새로운 버전의 컨테이너를 생성 가능

 

2.5 도커 컨테이너(Docker Container)

  • 도커 이미지를 실행한 인스턴스 
    • 즉, 이미지가 실제로 실행되어 동작하는 상태
  • 컨테이너는 격리된 환경에서 실행되며, 호스트 시스템의 리소스를 공유하면서 독립적으로 실행됨
  • 각 컨테이너는 자체 파일 시스템, 네트워크, 프로세스 공간을 갖고 있음 
  • 종료시, 모든 변경 사항이 사라지며, 새로운 컨테이너 생성시 재적용 필요

 

3. 컨테이너 동작 방식

출처: https://tech.cloudmt.co.kr/2022/06/29/%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%EC%9D%B4%ED%95%B4-1-3-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%82%AC%EC%9A%A9%EB%B2%95/

 

 

3.1 Docker Hub 이미지 검색

클라이언트는 원하는 이미지를 도커 허브를 통해서 검색한다

$ docker search nginx

 

3.2 Docker Image 다운로드

검색된 이미지를 다운로드 받는다

$ docker pull nginx:latest

 

3.3 컨테이너 생성 및 실행

다운로드 받은 이미지를 기반으로 컨테이너 생성 및 실행 ex) docker run

  • -d: 백그라운드에서 실행
  • --name: 컨테이너 이름 지정
  • -p: 호스트와 컨테이너 간의 포트 매핑 설정
$ docker run -d --name web -p 80:80 nginx:latest

 

 

참고

[따배도] 3.1 도커 컨테이너 살펴보기 : 이론편

https://www.youtube.com/watch?v=m454YTyPWSk&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=9