컨테이너란 무엇인가?
- 리눅스는 프로세스별로 자원을 격리해서 사용하는 cgroup와 특정 디렉토리로 권한을 제한하는 chroot 등으로 격리 환경을 구성할 수 있다. 여기에 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일 시스템을 합해 컨테이너 개념이 탄생했다.
- 즉, 컨테이너란 실행에 필요한 모든 파일을 포함한 전체 실행 환경에서 애플리케이션을 패키징하고 격리할 수 있는 기술이다. 논리적 공간(컨테이너)를 만들어 다양한 어플리케이션을 설치해 하나의 서버처럼 사용 할 수 있고, 대표적인 컨테이너 공개 소프트웨어로 도커(docker)가 있다.
- 컨테이너는 애플리케이션과 그 실행환경을 모두 포함한 소프트웨어 패키지로 Host OS에 상관없이 배포가 쉽고, 유연하며 Host OS와 애플리케이션을 분리하여 사용한다.
가상 머신(Virtual Machine) vs 도커 컨테이너(Docker Container)
[가상 머신]
- Hypervisor를 이용하여 Host OS위에 Guest OS를 설치하여 환경을 격리한다.
- Booting시 시간이 많이 걸리고 장애발생 소지가 있다.
- 패치하고, 버전을 관리하는데 노동력이 많이 든다. (각 OS별로 관리)
- 간단한 OS 프로세스를 위해서도 새로운 가상머신이 필요하다. 리소스 사용량이 많다.
[컨테이너]
- 도커 컨테이너는 가상화된 공간을 생성할 때 프로세스 단위의 격리 환경을 만드므로 성능 손실이 없다.
- 가상머신과 달리 호스트 커널을 공유해서 사용하므로, 컨테이너에는 라이브러리 및 실행파일만 있어서 용량이 작다.
도커란 무엇인가?
- 도커는 컨테이너 기술을 활용하여 애플리케이션을 패키징, 배포, 실행하는 플랫폼이다.
용어 | 설명 |
Client | - 도커를 build, pull, run 등 명령어 수행 |
DOCKER_HOST | - 도커가 띄워져 있는 서버 - DCOKER_HOST에서 컨테이너와 이미지 관리 |
Docker deamon | - 도커 엔진 |
Images | - 실행할 애플리케이션과 라이브러리 및 환경을 하나의 패키지로 묶은 것(이미지 : 클래스, 컨테이너 : 인스턴스 라고 생각하면 편함) |
Containers | - 도커 이미지의 실행중인 인스턴스 (Container is a runtime instacne of a docker image.) - 컨테이너의 구성 요소 ㄴ 도커 이미지 ㄴ 실행 환경 (execution environment) ㄴ a standard set of insturcions |
Registry | - 외부 이미지 저장소로 다른 사람들이 공유한 이미지를 내부 도커 호스트에 pull할 수 있음. 이렇게 가져온 이미지를 run 하면 컨테이너가 생성 - 도커 허브(Docker Hub)- public 저장소 - AWS ECR 혹은 Docker Registry를 직접 띄워 비공개로 사용 가능 |
'devops > docker' 카테고리의 다른 글
[도커 - 1] 클라우드 서비스 구축 (AWS EC2 무료로 사용하기) (0) | 2023.08.26 |
---|