docker
Application을 구동하는데 필요한 모든 것들을 docker Container안에 넣은 다음에
어떤 환경에서든 구애받지 않고 애플리케이션을 실행할 수 있도록 해 준다.
이렇게 컨테이너 형식으로 애플리케이션을 관리할 때 다음과 같은 이점들이 있다.
- 의존성 충돌 문제를 해결한다
- 개발 및 배포 환경의 일치화
- 수평적인 확장과 새로운 내용의 배포를 쉽게 해준다
- ex) kubernetes의 orchestration tool
큰 흐름으로 보자면
dockerfile 생성 및 build >> 이미지를 만든다 >> 컨테이너를 만든다 >> 배포하고 >> 구동한다
docker의 구성요소
도커를 구성하기 위해서는 3가지의 요소가 필요하다.
Dockerfile
애플리케이션을 구동하는데 필요한 정보들 [ 환경변수, 스크립트, 필수 파일, 의존성 등]
을 정리해놓은 일종의 설명서라고 보면 된다.
Container
컨테이너는 application이 의존성, 시스템 & 네트워크 환경의 영향을 받지 않고 docker라는
샌드박스 같은 기술 위해 독립적인 공간에서 각각 실행될 수 있도록 만든 박스라고 생각하면 된다.
Image
모든 container는 이미지로부터 생성된다.
이미지는 애플리케이션의 'SNAPSHOT'이라 보면 되고 한번 만들고 나면 불변의 특징이 있다.
자바 class파일이라 생각하면 될 듯
VM vs Container
Virtual Machine | Container |
운영체제 포함 | 운영체제 미포함 (호스트 OS의 커널을 공유*) |
Hypervisor 위에서 동작 (VM구동 소프트웨어) | Container Engine위에서 동작(docker같은) |
상대적으로 무겁다 | 상대적으로 가볍다 |
* 컨테이너가 호스트와 어떤 것을 공유/격리하는가?
cpu | 공유 |
메모리 | 공유 |
리눅스 커널 | 공유 |
네트워크 | 격리 |
파일 | 격리 |
프로세스 | 격리 |
Container 배포 방식
Local환경에서 만든 이미지를 'Container Registry'로 'PUSH를 한다.
필요한 서버나 개발자 pc에서 'Container Registry'로부터 이미지를 'PULL' 해온다.
(이때 받는 입장에서 컨테이너 엔진이 설치돼있어야 함)
public | private |
dockerhub | AWS |
RED HAT Quay.io | Google Cloud |
Github Packages | Microsoft Azure |
'programming > GENERAL' 카테고리의 다른 글
[EC2] Nginx를 이용한 React 배포 (0) | 2022.09.03 |
---|---|
Git 입문 (0) | 2022.05.03 |
Git command 정리 (0) | 2022.05.03 |
Git workflow process (0) | 2022.05.03 |
2진수 계산 (0) | 2022.04.26 |