[Docker] Docker 기초 이론

2025. 2. 6. 22:24·Dev/Docker

Docker 기초 이론
Docker 기초 이론


init

과거에는 애플리케이션을 다양한 환경에 배포하기 위해 각 환경별로 수동 설정을 해야 했으며, 종속성 문제와 버전 충돌을 해결하는 데 많은 노력이 필요했습니다.

 

이 과정에서 발생하는 오류는 흔한 일이었고, 개발팀과 운영팀 간의 원활한 협업을 방해하는 주요 요인이 되었습니다. 특히, 대규모 시스템에서는 이러한 복잡성이 더욱 두드러졌습니다.

 

그러나 Docker의 등장은 이러한 문제를 해결하는 데 있어 새로운 돌파구를 제시했습니다.

컨테이너화 기술을 기반으로 한 Docker는 개발과 운영의 효율성을 획기적으로 개선하고, 애플리케이션의 이식성과 관리 편의성을 한층 높였습니다.

 

덕분에, 복잡한 환경 설정 없이도 일관된 실행 환경을 보장할 수 있게 되었고, 개발자들은 빠르고 안정적인 소프트웨어 배포를 실현할 수 있게 되었습니다.


도커란 무엇인가?

  • 도커(Docker)는 소프트웨어 기술을 활용하여 애플리케이션을 더 쉽게 개발, 배포 및 실행 할 수 있도록 도와주는 오픈소스 플랫폼입니다.
  • 애플리케이션과 필요한 라이브러리, 설정 등을 하나의 "컨테이너"로 묶어 어디서든 동일하게 실행되도록 도와줍니다. 그렇기 때문에 다른 애플리케이션이나 시스템에 영향을 미치지 않습니다.

도커 사용 목적

 

도커 사용 목적 설명
개발 환경 표준화 모든 개발자가 동일한 환경에서 작업할 수 있도록 보장합니다.
애플리케이션 배포 자동화 배포 시간을 단축하고, 안정적인 배포 프로세스를 구현할 수 있습니다.
멀티 클라우드 지원 특정 클라우드 플랫폼에 종속되지 않고, 다양한 환경에서 일관되게 작동합니다.
테스트 환경 구성 테스트 환경을 빠르게 생성하고, 필요한 경우 제거하여 효율적으로 자원을 사용할 수 있습니다.
DevOps 지원 CI/CD 파이프라인에 통합되어 빌드, 테스트, 배포 과정을 자동화할 수 있습니다.

도커 아키텍처 동작 흐름

Docker를 이용하여 '클라이언트 - 서버' 를  구성하는 아키텍처 입니다.

  • 사용자는 Client에서 명령을 실행(docker build, docker pull, docker run)합니다.
  • 명령은 Docker Daemon이 있는 Docker Host로 전달되어 이미지 생성 또는 컨테이너 실행 작업을 처리합니다.
  • 필요 시 Docker Host는 Registry에서 이미지를 가져와 작업을 수행합니다.
  • 이미지를 실행하여 컨테이너를 생성하고 애플리케이션을 실행합니다.

 

도커 아키텍처 동작 흐름
https://docs.docker.com/get-started/docker-overview/#docker-architecture

 


도커 주요 용어 요약

1) 컨테이너(Container)

  • 도커의 핵심 개념 중 하나로, 애플리케이션과 그 종속성을 격리된 환경에서 실행하는 단위입니다.
  • 호스트 시스템의 리소스와 격리되어 있어 다른 컨테이너와 시스템에 영향을 받지 않습니다. 

2) 이미지(image)

  • 컨테이너를 생성하기 위한 템플릿으로, 애플리케이션 코드, 라이브러리, 종속성, 설정 파일 등을 포함하며, 불변성을 가집니다.

3) 도커 허브(Docker Hub)

  • 도커 컨테이너 이미지를 공유하고 관리하기 위한 클라우드 기반 레지스트리입니다.
  • 공식 이미지와 커뮤니티에서 제공하는 이미지를 검색하고 다운로드할 수 있습니다.
  • 개인 프로젝트를 위해 이미지를 업로드하거나 공유할 수도 있습니다.

4) 도커 명령 인터페이스(Docker CLI)

  • Docker를 명령어로 조작할 수 있도록 하는 도구입니다.
  • 컨테이너 생성, 실행, 중지, 삭제, 이미지 빌드 등의 작업을 CLI를 통해 수행할 수 있습니다.

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

  • Docker 이미지를 저장하고 관리하는 저장소입니다.
  • Docker Hub는 대표적인 Docker 레지스트리이며, 개인이나 기업이 자체적으로 구축할 수도 있습니다.
  • 이미지를 업로드하고, 필요할 때 이를 다운로드받아 컨테이너를 실행할 수 있습니다.

6) 도커 컴포즈(Docker Compose)

  • 여러 컨테이너를 정의하고 관리할 수 있는 도구입니다.
  • docker-compose.yml 파일에 컨테이너 설정을 정의하여 복잡한 다중 컨테이너 애플리케이션을 손쉽게 실행할 수 있습니다.

7) 도커파일(Docker File)

  • Docker 이미지를 빌드하기 위한 설정 파일입니다.
  • 애플리케이션 빌드 과정을 단계별로 정의하며, 텍스트 파일 형식으로 작성됩니다.
  • 주요 명령어로 FROM, RUN, CMD, COPY, EXPOSE 등이 있습니다.

8) 도커 볼륨(Docker Volume)

  • 컨테이너와 호스트 간 데이터를 영구적으로 저장하고 공유할 수 있는 스토리지 방식입니다.
  • 컨테이너가 삭제되더라도 데이터는 유지됩니다.

9) 도커 데몬(Docker Deamon)

  • 클라이언트에서 요청한 ‘도커 명령어를 처리’하고 도커 컨테이너를 관리하는 백그라운드 프로세스입니다.

10) 도커 네트워크(Docker Network)

  • 컨테이너 간, 또는 컨테이너와 호스트 간의 통신을 설정하고 관리하기 위한 기능입니다.
  • 도커는 기본적으로 컨테이너를 네트워크에 연결하여 통신할 수 있는 환경을 제공합니다.

마무으리

도커 기초개념을 정리하면서 컨테이너와 이미지의 차이, 그리고 도커의 전체적인 동작 흐름을 이전보다 잘 이해하게 된 것 같습니다. 아직 도린이지만, 단계별로 학습과 실습을 통해 배워나가겠습니다. 앞으로 실전에서도 활용할 수 있도록 꾸준히 익혀가야겠습니다! 🚀

저작자표시 비영리 변경금지 (새창열림)

'Dev > Docker' 카테고리의 다른 글

[Docker] Docker 초보 탈출! 명령어 총 정리  (0) 2025.02.13
[Docker] 컨테이너 라이프 사이클 & CLI  (0) 2025.02.11
[Docker] Docker Compose 설치 & 개념 정리  (0) 2025.02.07
[Docker] 포테이너(Portainer) 설치 & 개념 정리  (1) 2025.02.06
[Docker] Ubuntu 24.04 Docker 설치  (0) 2025.02.05
'Dev/Docker' 카테고리의 다른 글
  • [Docker] 컨테이너 라이프 사이클 & CLI
  • [Docker] Docker Compose 설치 & 개념 정리
  • [Docker] 포테이너(Portainer) 설치 & 개념 정리
  • [Docker] Ubuntu 24.04 Docker 설치
Code Ninja
Code Ninja
초보 개발자의 성장 기록을 담아, 어렵지 않게 풀어쓰는 기술 블로그를 운영하고 있습니다.
  • Code Ninja
    Beautiful Code
    Code Ninja
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • Project (11)
        • Home Server (5)
        • Tistory (6)
        • 블로그 자동포스팅 (0)
      • Dev (12)
        • Typescript (4)
        • Docker (6)
        • DB (0)
        • React (0)
        • Linux (2)
        • Github (0)
      • 자기계발 & 라이프 해킹 (3)
  • hELLO· Designed By정상우.v4.10.3
Code Ninja
[Docker] Docker 기초 이론
상단으로

티스토리툴바