원티드에서 Docker : 나만의 도커 이미지 만들기 부터, 클라우드 배포까지! 라는 온보딩에 참여하면서 해당 내용을 정리해보고자 합니다.
1. 도커(Docker)란 무엇일까?
컨테이너 기반 가상화 도구로 어플리케이션을 컨테이너 라는 단위로 격리하여 실행하고 배포하는 기술
- open platform이다
- 어플리케이션을 인프라에서 분리해준다
- 신속하다
- 인프라를 어플리케이션 처럼 관리 할 수있다.
- 코드 배포에 용이하다
1.1 컨테이너(Container)란 무엇일까?
컨테이너는 가상화 기술 중 하나
- 호스트 운영체제 위에 여러개의 격리된 환경을 생성
- 각각의 컨테이너 안에서 애플리케이션을 실행
1.2 가상화(Virtualization) 기술이란 무엇일까?
하나의 물리적인 컴퓨터 자원(cpu, 메모리, 저장장치 등)을 가상적으로 분할하여 여러개의 가상컴퓨터 환경을 만들어 내는 기술
이를통해 물리적인 컴퓨터 자원을 더욱 효율적으로 사용할 수 있으며, 서버나 애플리케이션 등을 운영하는데 있어 유연성과 안정성을 제공합니다.
1.3 하이퍼바이저(Hypervisor)란?
하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층으로 가상머신 (Virtual Machine, VM)을 생성하고 구동하는 소프트웨어로 가상 머신 모니터(Virtual Machine Monitor, VMM)라고도 불립니다.
- os에 자원 할당 및 조율
- os의 요청을 번역하여 하드웨어에 전달
▶ Virtual Machine(가상머신)
가상머신(Virtual Machine)은 하이퍼바이저(Hypervisor)를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식으로 각 게스트 운영체제는 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당받아 사용합니다.
각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생합니다. 그 뿐만 아니라 가상 머신은 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기 또한 커집니다. 즉, 가상 머신은 완벽한 운영체제를 생성할 수 있다는 장점은 있지만 일반 호스트에 비해 성능 손실이 있으며, 수 기가바이트에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기는 부담스럽다는 단점이 있습니다.
1.4 Docker Container (도커 컨테이너)
컨테이너 런타임(Container Runtime)
1.5 컨테이너 기반 특징
도커는 리눅스에서만 사용해야 하나요?
리눅스 커널의 기능을 사용하여 만들어졌습니다.
- chroot : 파일 시스템을 격리
- namespace : 프로세스 격리
- cgroup : 하드웨어 자원 격리
그냥 프로그램 실행하는 것과 무엇이 다른가요?
프로세스 단위의 격리 환경
2. Docker
- 컨테이너 기반 가상화 도구
- 어플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술
- 다양한 운영체제에서 사용할 수 있으며 컨테이너화된 애플리케이션을 손쉽게 빌드, 배포, 관리할 수 있는 다양한 기능을 제공
위 기능을등으로 통해 애플리케이션을 빠르게 개발하고, 효율적으로 배포, 관리할 수 있음
연관된 글 :
참고 :
쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념
'개발 > 개발 환경' 카테고리의 다른 글
온프레미스 (On-premise), 클라우드 (Cloud) (0) | 2023.04.23 |
---|---|
클라우드 서비스(IaaS, PaaS, SaaS) (0) | 2023.04.23 |
코딩 자동완성 플러그인 (0) | 2023.03.12 |
인텔리제이 환경설정/플러그인/ 단축키/꿀팁 (0) | 2023.02.23 |
POSTMAN (0) | 2023.02.21 |