본문 바로가기
DevOps/Docker

[DevOps] Docker 기초(1) - 사전 기초 지식

by 가영리 2024. 6. 6.
728x90

사전 기초 지식

도커를 이해하기 위해선 운영체제, 프로그램, 스레드, 네임스페이스와 같은 개념을 먼저 이해해야 한다.

운영체제의 개념

운영체제

컴퓨터 = 하드웨어 + 소프트웨어

운영체제 = 시스템 소프트웨어

운영체제가 있어야 프로그램들이 실행될 수 있다.

운영체제는 하드웨어, 소프트웨어 자원을 관리하고 스케줄링 기능을 제공할 뿐만 아니라 프로그램이 실행될 수 있는 환경을 제공한다.

출처 : 한 권으로 배우는 도커 & 쿠버네티스

 

셸 Shell

운영체제와 애플리케이션 사이 존재하는 프로그램

운영체제와 사용자 사이에서 다리 역할을 한다.

출처 : 한 권으로 배우는 도커 & 쿠버네티스

프로그램, 프로세스, 스레드의 개념

프로그램

실행 가능한 명령어의 집합

프로그램은 하드 디스크와 같은 저장 장치에 저장되어 있지만 메모리에는 올라가지 않은 정적인 상태를 의미한다.

프로세스

실행 중인 프로그램

메모리에 올라가 있는 동적인 상태의 프로그램을 의미한다.

프로세스는 스레드의 정보를 담고 있는 것, 즉 스레드의 컨테이너라 할 수 있다.

멀티 프로세스

디스크에 존재하는 프로그램을 여러 번 실행해서 여러 개의 프로세스를 작동시키는 것

스레드

프로세스가 할당받은 자원을이용하는 실행 단위이자 프로세스 내에 실행되는 여러 흐름의 단위

메인 스레드 : 프로세스는 최소 한 개 이상의 스레드를 가진다.

e.g) 워드 프로그램 : 스레드1 : 화면상 글자 보여주기 / 스레드 2 : 사용자의 키 입력에 대응 / 스레드 3 : 백그라운드에서 오탈자와 문법 확인 → 하나의 프로세스에 총 세 개의 스레드가 실행되는 중

네임스페이스

프로세스를 실행할 때 시스템 리소스를 분리해서 실행할 수 있도록 도와주는 기능

리눅스 네임스페이스

네임스페이스 의미 역할
pid PID : Process ID 리눅스 커널의프로세스 ID를 분리
net NET : Networking 네트워크 인터페이스(NET)를 관리
ipc IPC : Inter Process Communication 프로세스 간 통신(IPC) 접근을 관리
mnt MNT : Mount 파일 시스템의 마운트를 관리
uts UTS : Unix Timesharing System 커널과 버전 식별자를 관리

도커 기초 지식

도커란?

컨테이너라고 부르는 운영체제 수준의 가상화 방식으로 소프트웨어를 배포하는 방식을 사용하는 PaaS

도커를 사용하면 다양한 개발 환경에서 컨테이너를 이용해 소프트웨어를 편리하게 배포할 수 있다.

출처 : 한 권으로 배우는 도커 & 쿠버네티스

컨테이너란?

소프트웨어를 배포할 때 필요한 코드, 라이브러리, 환경 설정 파일들을 한데 모아 격리시킨 후 실행가능한 패키지로 만든 것

마이크로서비스 아키텍처의 기반이 된다.

가상화란?

컴퓨터에서 활용하는 리소스를 추상화하는 개념을 의미하는 용어

단일 컴퓨팅 자원을 여러 개의 논리적인 자원으로 나누어 동작시킬 수 있다.

도커 구성 요소

  • 도커 클라이언트 Docker Client
    • 가상 머신에서 실행하는 터미널
    • 도커 데몬과 통신한다
  • 도커 데몬 Docker Daemon
    • 백그라운드에서 실행되는 데몬 프로세스
    • 도커와 관련된 객체를 관리한다
  • containerd
    • 컨테이너 실행과 관리에 필요한 기능을 수행하는 오픈소스 컨테이너 런타임
    • 컨테이너의 생명주기를 관리한다.
  • runc
    • 컨테이너 실행과 관련된 작업을 수행하는 저수준 컨테이너 런타임
    • 실제 컨테이너 실행만 담당한다.
  • containerd-shim
    • containerd와 runc 사이에서 작동하는 중간 프로세스로 컨테이너 실행을 조정