일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring
- Data Structure
- 자바
- mongoDB
- 백준
- MySQL
- spring webflux
- 자료구조
- c언어
- OS
- 운영체제
- Proxy
- 파이썬
- 컴퓨터구조
- Java
- 알고리즘
- Galera Cluster
- C
- 디자인 패턴
- MSA
- JPA
- Algorithm
- 네트워크
- design pattern
- JavaScript
- IT
- Heap
- redis
- react
- Kafka
Archives
- Today
- Total
시냅스
Docker 기본 개념 정리 본문
Docker 란
- 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 민 운용하기 위한 오픈소스 플랫폼
- 인프라 환경을 컨테이너로 관리
- 애플리케이션 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로 모은다.
- 애플리케이션 실행에 필요한 모든 것이 포함된 Docker 이미지를 작성하여 컨테이너를 가동시킨다.
- 이미지는 Docker가 설치된 환경이라면 어디서든 실행할 수 있는 높은 이식성을 갖게 된다.
기본 기능 3가지
- build
- 애플리케이션의 실행에 필요한 모든 것을 모아 Docker 이미지로 만듬
- Docker 명령을 통한 수동 / Dockerfile 작성을 자동으로 이미지를 만들 수 있음
- ship
- Docker hub을 통해 이미지를 받을 수 있음
- run
- 컨테이너 단위로 서버 기능을 작동시킨다.
- 프로세스를 실행시키는 것 처럼 이미지를 빠르게 실행시킬 수 있음.
Docker의 작동 구조
- Linux 커널 기술을 베이스로 구성
- 컨테이너를 구획하는 기술은 namespace를 사용한다.
- 한 덩어리의 데이터에 이름을 붙여 분할하는 기술
- 충돌 가능성을 줄이고, 쉽게 참조할 수 있게 한다.
- PID namespce
- PID와 프로세스를 격리시킨다.
- namespace가 다른 프로세스끼리 서로 액세스 할 수 없음
- Network namespace
- 네트워크 리소스를 격리된 namespace 마다 독립적으로 가진다.
- UID namespace
- MOUNT namespace
- 격리된 파일 시스템 트리
- UTS namespace
- 호스트 / 도메인 명
- IPC namespace
- shared memory, semaphore, message queue ... some resources
- 릴리스 관리 장치 (cgroups)
- 물리 머신 상의 자원을 여러 컨테이너가 공유
- linux kernal 의 control groups 기능을 사용
- 프로세스, 스레드에 대한 관리
- 그룹별로 제한을 둔다.
- 한 컨테이너가 모두 독점하는 것을 막음
- 네트워크 구성 (가상 브리지 / 가상 NIC)
- docker0 은 docker의 가상 브리지 네트워크
- 외부와의 접속은 NAPT를 활용
- NAPT
- 하나의 IP 주소를 여러 컴퓨터가 공유
- IP주소와 포트 번호로 변환
Comments