Docker를 공부해보자.
Go 언어로 작성된 리눅스 컨테이너 기반 오픈소스 가상화 플랫폼
리눅스의 컨테이너라는 기술을 이용한다.
과거에는 하나의 서버에 여러 프로그램을 설치할 때 라이브러리 버전이 다르거나 포트 중복이 생기면 매우 까다로웠다. (1서버 1프로그램)
그래서 한 대의 서버를 여러 개처럼 나누어 효율적으로 활용하기 위해 가상화가 등장했다.
컴퓨터의 성능을 더 효율적으로 사용하기 위해 등장했다. 활용도가 낮은 서버들의 리소스 관리를 돕는다.
OS가상화(VM), 프로세스 가상화(Container) 등이 있다.
가상화 기술 중 하나. 프로세스를 격리시켜 동작하는 방식으로 이루어진다.
컨테이너 가상화는 Guest OS없이 Host OS위 Container에서 바로 동작하므로 Host의 I/O 커널을 공유할 수 있어 성능이 높다. 필수적인 바이너리만 추가로 올라간다.
이에 반해 OS 가상화는 Host OS위에 추가로 Guest OS가 올라가므로 무겁고 느릴 수밖에 없다. 그러나 커널을 공유하지 않아 보안성이 높다.
*커널 : 운영체제의 핵심부. CPU, 메모리, 파일, 네트워크, 입출력 장치 등을 관리한다.