이 시리즈는 책을 읽으면서 실습하는 포스팅이다. 중간중간 필요한 개념도 정리하자.
도커 이미지와 도커 컨테이너
- 도커 컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.
- 도커 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 ㅍ포함하는 가볍고 독립적이며 실행 가능한 소프트 웨어 패키지이다.
도커를 사용할 때의 흐름
- 도커 클라이언트에 원하는 명령을 입력한다.
- 도커 서버(도커 데몬)가 도커 클라이언트에 입력한 명령어를 전달받으면 명령어에 따른 이미지를 생성하고 컨테이너를 실행한다. 그리고 해당 컨테이너에서 애플리케이션을 실행한다.
도커는 어떻게 컨테이너를 격리시킬까?
이 부분에 대한 답을 얻으려면 리눅스에서 쓰이는 Cgroup(control groups)과 네임스페이스(namespaces)에 대해 알아야 한다.
Cgroup과 네임스페이스
Cgroup과 네임스페이스는 다른 프로세스 사이에 벽을 만드는 리눅스 커널의 기능이다. Cgroup은 CPU, 메모리, 네트워크 대역폭, HD I/O 등 프로세스 그룹의 시스템 리소스 사용량을 관리한다. 예를 들어 어떤 애플리케이션의 사용량이 너무 많다면 그 애플리케이션을 Cgroup에 배치해서 CPU와 메모리 사용을 제한할 수 있다.
네임스페이스는 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술로 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술이다.
Window와 MacOS에서 리눅스 커널의 Cgroup, 네임스페이스를 쓸 수 있는 이유
현재 컴퓨터의 호스트 OS와 상관없이 도커는 리눅스 VM에서 돌아간다. 따라서 리눅스의 Cgroup과 네임스페이스를 사용할 수 있다.
도커 컨테이너가 생성되는 순서
1. 도커 클라이언트에 'docker run <이미지>' 명령어를 입력한다.
docker run hello-world
2. 도커 이미지에 있는 파일 스냅숏을 컨테이너에 있는 하드디스크로 옮긴다.
3. 도커 이미지에서 가지고 있는 명령어를 컨테이너에 전다한다.
4. 컨테이너가 실행될 때 명령어를 이용해 hello-world 애플리케이션을 실행한다.
'DevOps' 카테고리의 다른 글
Dockerfile로 nginx + django 서버 만들기 (0) | 2023.03.07 |
---|---|
따라하며 배우는 도커와 CI 환경 - 3. 직접 도커 이미지 생성하기 (0) | 2023.03.05 |
Github Actions CI/CD 알아보기 - 1 (1) | 2023.02.24 |
배포전략 - 카나리 배포전략 (0) | 2023.02.18 |
SSH 터널링(포트 포워딩) (1) | 2023.02.04 |