Docker In Action 1. 도커 소개
컨테이너 기반의 도커
도커 컨테이너
Command Line으로 실행되는 프로그램(1.1)과 도커가 각각의 프로그램을 컨테어너화(1.2)하여 실행하는 방식
- 도커는 도커 백그라운드 서비스 (docker daemon) 과 인터렉션이 가능한 CLI 툴 (docker CLI)를 제공
- 각 컨테이너는 도커 서비스의 자식 프로세스로 실행, 각 컨테이너는 고유의 메모리 영역과 자원을 할당 받음.
- 도커 컨테이너는 크게 8개 파트로 isolated 구분될 수 있다.
+ PID namespace : 프로세스 구분자와 가용성
+ UTS namespace : Host와 도메인 이름
+ MNT namespace : 파일 시스템과 구조
+ IPC namespace : 프로세스 간 통신 (공유 메모리)
+ NET namespace : 네트워크 접근과 구조
+ USR namespace : User 이름과 구분자
+ chroot() 파일 시스템 루트의 위치를 제어
+ cgroups 자원 보호
도커의 배포는 image라는 형식으로 가능하다. image는 프로그램 실행을 위해 필요한 파일 시스템 스냅샷.
도커는 프로그램 설치, 업그레이드, 배포에 도움을 주는 도구. 서로 다른 프로그램의 dependency 충돌, 완전한 프로그램의 제거, regacy에 해당하는 dependency 제거 등 문제를 해결.
리눅스, Mac, Windows 등 상호 호환 운영이 가능한 protable 활용.
각 운영체제에 의존적인 컴포넌트를 제거함을 대신 도커는 기본적으로 Linux OS에서 동작하는 가상 머신. Windows나 Mac에서도 가상 기술로 Linux OS를 실행할 수 있다. 하나의 운영체제에서 실행되기 때문에 이식성을 고려해야하는 cost를 없애고 새로운 기술을 새로 배울 필요가 없어진다.
컨테이너 실행
도커 명령어로 컨테이너를 실행할 수 있다.
docker run dockerinaction/hello_world
- 도커는 해당 이미지 이름을 검색하여 설치되어 있는 이미지인 지 확인한다.
- 이미지가 설치되어 있지 않다면 Docker Hub에서 검색하여 다운로드 한다.
- 이미지를 구성하는 layer를 설치한다.
- 이미지를 바탕으로 새로운 컨테이너를 만들고 프로그램을 실행한다.
이미 설치되어 있는 이미지를 실행 시 컨테이너를 새로 만들고 실행만 하면 완료된다.