Written by coh at home
[도커] 사전지식 본문
Process vs Program
program : 실행할 수 있는 명령어의 집합. 메모리에 올라가지 않은 상태.
process : 메모리에 올라간 프로그램.
Thread
Process에서 실행의 단위.
예를 들어 노션에서 글씨를 칠 때 다음과 같은 3가지 스레드가 동시에 돌아간다.
- I/O를 감지하는 쓰레드
- 모니터에 출력하는 스레드
- 문법을 검사하는 스레드
OS
컴퓨터는 계산기다. 컴퓨터는 하드웨어와 소프트웨어로 나뉘는데 소프트웨어에서는 크게 운영체제와 그 위에서 동작하는 애플리케이션으로 나눌 수 있다.
운영체제
운영체제는 간단하게 커널, 시스템콜, 드라이버로 이루어져 있다. 시스템콜은 통로라고 볼 수 있다. 사용자가 자원에 직접 접근하는 것을 막고 해당 API를 통해 접근하게 함으로서 컴퓨터 자원을 보호한다.
도커란?
컨테이너라는 OS수준의 가상화 방식으로 소프트웨어를 배포하는 PaaS 프로그램.
사용자는 애플리케이션과 데이터만 신경쓰면 된다.
도커를 사용하면 서로 다른 환경이더라도 배포할 수 있다.
도커는 애플리케이션별로 묶어서 실행하게 된다. 이때 묶는 단위를 컨테이너라고 한다. 각 컨테이너는 애플리케이션을 실행하기 위한 최소한의 바이너리, 라이브러리가 포함한다.
컨테이너 : 코드 + 라이브러리 + 환경설정파일
코드 + 라이브러리 + 환경설정파일을 격리시킨 후 실행가능한 패키지로 만든 것.
- 격리된 컨테이너끼리는 통신을 주고 받을 수 있다.
가상머신 VS 도커
간단히 말하면 도커는 Guest OS를 설치하지 않아도 되므로 빠르고 효율성이 높다. 따라서 호스트 OS의 커널을 공유한다. 따라서 호스트 시스템에서 컨테이너 내부의 프로세스를 볼 수 있다.
- 커널이란 -RedHat
- 설명하자면 다음과 같습니다. 커널은 강력한 경영진(하드웨어)을 위해 일하는 바쁜 비서입니다. 비서의 할 일은 직원 및 대중(사용자)으로부터 수신되는 메시지 및 요청(프로세스)을 경영진에게 전달하고, 어디에 무엇이 저장되어 있는지 기억(메모리)하고, 특정한 시간에 누가 경영진을 얼마 동안 만날 수 있는지 결정하는 것입니다.
도커 구성요소
docker-cli → dockered → containerd → docker-shim → runc
- docker-cli : 터미널. dockered-API를 사용해 run, build, pull같은 명령어를 실행한다. 도커데몬과 통신한다.
- dockered : 도커데몬. 백그라운드에서 실행되는 데몬 프로세스. 도커 API요청을 수신하고 도커이미지, 컨테이너 등 도커와 관련된 객체를 관리한다.
- containerd : 컨테이너 실행과 관리에 필요한 기능을 수행. 컨테이너의 생명주기를 관리. (고수준의 런타임)
- runc : 컨테이너 실행과 관련된 작업을 수행. (저수준 런타임) containerd는 실행 외 관리도 담당하지만 runc는 실행만을 담당.
- containerd-shim : 중간 프로세스로 컨테이너 실행을 조정하는 역할.
Process vs Program
program : 실행할 수 있는 명령어의 집합. 메모리에 올라가지 않은 상태.
process : 메모리에 올라간 프로그램.
Thread
Process에서 실행의 단위.
예를 들어 노션에서 글씨를 칠 때 다음과 같은 3가지 스레드가 동시에 돌아간다.
- I/O를 감지하는 쓰레드
- 모니터에 출력하는 스레드
- 문법을 검사하는 스레드
OS
컴퓨터는 계산기다. 컴퓨터는 하드웨어와 소프트웨어로 나뉘는데 소프트웨어에서는 크게 운영체제와 그 위에서 동작하는 애플리케이션으로 나눌 수 있다.
운영체제
운영체제는 간단하게 커널, 시스템콜, 드라이버로 이루어져 있다. 시스템콜은 통로라고 볼 수 있다. 사용자가 자원에 직접 접근하는 것을 막고 해당 API를 통해 접근하게 함으로서 컴퓨터 자원을 보호한다.
도커란?
컨테이너라는 OS수준의 가상화 방식으로 소프트웨어를 배포하는 PaaS 프로그램.
사용자는 애플리케이션과 데이터만 신경쓰면 된다.
도커를 사용하면 서로 다른 환경이더라도 배포할 수 있다.
도커는 애플리케이션별로 묶어서 실행하게 된다. 이때 묶는 단위를 컨테이너라고 한다. 각 컨테이너는 애플리케이션을 실행하기 위한 최소한의 바이너리, 라이브러리가 포함한다.
컨테이너 : 코드 + 라이브러리 + 환경설정파일
코드 + 라이브러리 + 환경설정파일을 격리시킨 후 실행가능한 패키지로 만든 것.
- 격리된 컨테이너끼리는 통신을 주고 받을 수 있다.
가상머신 VS 도커
간단히 말하면 도커는 Guest OS를 설치하지 않아도 되므로 빠르고 효율성이 높다. 따라서 호스트 OS의 커널을 공유한다. 따라서 호스트 시스템에서 컨테이너 내부의 프로세스를 볼 수 있다.
- 커널이란 -RedHat
- 설명하자면 다음과 같습니다. 커널은 강력한 경영진(하드웨어)을 위해 일하는 바쁜 비서입니다. 비서의 할 일은 직원 및 대중(사용자)으로부터 수신되는 메시지 및 요청(프로세스)을 경영진에게 전달하고, 어디에 무엇이 저장되어 있는지 기억(메모리)하고, 특정한 시간에 누가 경영진을 얼마 동안 만날 수 있는지 결정하는 것입니다.
도커 구성요소
docker-cli → dockered → containerd → docker-shim → runc
- docker-cli : 터미널. dockered-API를 사용해 run, build, pull같은 명령어를 실행한다. 도커데몬과 통신한다.
- dockered : 도커데몬. 백그라운드에서 실행되는 데몬 프로세스. 도커 API요청을 수신하고 도커이미지, 컨테이너 등 도커와 관련된 객체를 관리한다.
- containerd : 컨테이너 실행과 관리에 필요한 기능을 수행. 컨테이너의 생명주기를 관리. (고수준의 런타임)
- runc : 컨테이너 실행과 관련된 작업을 수행. (저수준 런타임) containerd는 실행 외 관리도 담당하지만 runc는 실행만을 담당.
- containerd-shim : 중간 프로세스로 컨테이너 실행을 조정하는 역할.