From afd8a33f50f42b8c767740c1e96eb7743a614cc9 Mon Sep 17 00:00:00 2001 From: boingboing Date: Thu, 25 Mar 2021 23:48:34 +0900 Subject: [PATCH] Add files via upload --- ...4\354\231\200 \353\217\204\354\273\244.md" | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 "Lina Yi/2021_03_25_\352\260\200\354\203\201\355\231\224\354\231\200 \353\217\204\354\273\244.md" diff --git "a/Lina Yi/2021_03_25_\352\260\200\354\203\201\355\231\224\354\231\200 \353\217\204\354\273\244.md" "b/Lina Yi/2021_03_25_\352\260\200\354\203\201\355\231\224\354\231\200 \353\217\204\354\273\244.md" new file mode 100644 index 00000000..1828d07c --- /dev/null +++ "b/Lina Yi/2021_03_25_\352\260\200\354\203\201\355\231\224\354\231\200 \353\217\204\354\273\244.md" @@ -0,0 +1,58 @@ + ## 컨테이너 + +도커(Docker)의 등장 이후 컨테이너가 급속도로 유행하기 시작했다. + +컨테이너란 무엇이고 어떤 이점이 있는지 소개하도록 하겠다. + +컨테이너는 '그릇', '용기' 등의 의미로 한 마디로 정의하면 **'리소스가 격리된 프로세스'**이다. + +하나의 OS상에서 여러 개를 동시에 가동할 수 있으며, **각각 독립된 루트 파일 시스템, CPU/메모리, 프로세스 공간 등을 사용할 수 있다**는 점이 하드웨어 가상화인 가상머신(VM)과의 차이다. + + +## 컨테이너의 역사 + +컨테이너의 역사를 살펴 보면, 1970년대 빌 조이가 개발한 chroot가 시발점이라고 알려져 있다. 빌 조이는 BSD(Barkley Softward Distribution) 유닉스나 TCP/IP, vi 등을 개발한 사람이다. + +1970년대에 컴퓨터는 매우 비싸서 상용 환경과 개발 환경을 별도로 준비하려면 많은 비용이 들었다. 하나의 컴퓨터로 상용, 개발 환경을 함께 사용하면 잘못된 파일을 변경하거나 삭제할 위험이 있었다. + +이 문제를 해결하기 위해 등장한 것이 바로 chroot다. + +### chroot +프로세스가 OS의 루트 디렉토리 아래에 있는 특정 계층에 접근하지 못하도록 하는 기능으로 현재도 다양한 분야에 적용되고 있다. + +예를 들어 리눅스의 레스큐 모드(Rescue mode), FTP에서 사용자 단위로 접근 범위를 한정하는 기능, 포스트픽스(Postfix)이나 바인드(BIND) 등으로 접근할 수 있는 디렉터리를 한정하는 기능 등에 활용되고 있다. + +1990년대에 FreeBST jail이 등장해서 '특정 디렉터리 이하를 루트 디렉터리처럼 보이게 하는' chroot 개념이 추가됬으며, 이를 통해 애플리케이션의 프로세스도 격리할 수 있게 됬다. + +이후 빌 조이가 소속돼 있던 선 마이크로시스템즈는 2000년대에는 솔라리스(Solaris) 컨테이너라 불리는 컨테이너 기능을 제공했다. + + +## 도커의 등장 + +이후로도 상용 유닉스나 오픈 소스에서 컨테이너 기술의 개발이 착실히 진행됬으며, 2013년에 파일 시스템과 프로세스를 분리하는 기능이 추가됬다. 이를 통해 파일 시스템 이미지의 패키징과 버저닝이 가능해졌고 컨테이너 이미지를 공유할 수 있는 도커가 등장함으로써 컨테이너 기술이 주목을 받기 시작했다. + +구글은 2014년 모든 서비스 및 사내에서 사용되고 있는 모든 툴을 컨테이너형 가상화 기술에서 실행하고 있다고 발표했다.(도커 등장 이전부터 컨테이너를 사용해왔다고 한다) + + +도커 회사(도커는 사실 회사명이기도 하다)는 개명하기 전에 닷클라우드(dotCloud)라는 명칭을 사용했으며, 2008년에 언어에 의존하지 않는 PaaS를 구축하기 위해 설립했다. + +닷 클라우드의 PaaS는 개발한 애플리케이션을 클라우드에 배포해서 실행하는 구조였다. + +하지만 **애플리케이션 관련 프레임워크나 라이브러리 등의 버전이 일치하지 않아서 로컬에서 실행된 프로그램이 클라우드에서는 실행되지 않는 문제가 빈번하게 발생**했다. + +따라서 원래 클라우드 내부 구조로 개발했던, 애플리케이션 실행 환경을 자동 구축해주는 '도커 이미지'라는 기술을 클라우드 이외의 환경에서도 사용할 수 있게 오픈 소스로 공개했다. + +또한, 도커 허브(Docker Hub)라는 도커 이미지를 공유할 수 있는 레지스트리가 생겨나면서 폭발적인 인기를 얻기 시작했다. + +### 가상머신 vs 도커 +가상 머신과 비교해서 도커가 지니는 장점은 다음과 같다. + +- **컨테이너는 호스트 OS와 커널을 공유**하므로 **컨테이너 실행이나 정지 속도가 빠르다.** + +- 호스트 OS의 커널을 공유하므로 VM만 사용하는 경우와 비교해 **한 대의 호스트 머신 상에서 훨씬 많은 컨테이너를 실행할 수 있다.** 이를 통해 리소스를 한 곳에서 쉽게 관리할 수 있다. + +- 도커는 라이브러리나 프레임워크 등을 도커 이미지로 묶어서 공유할 수 있는 것으로, 특정한 환경에서는 재현되지만 자신의 개발환경에서는 재현되지 않는 문제가 발생하기 어렵다. 따라서 버그를 효율적으로 수정할 수 있다. + + + +출처: 그림으로 보는 인프라 구조 3장 - 3계층형 시스템을 살펴보자