728x90
Docker
- 컨테이너는 애플리케이션을 환경에 구애 받지 않고 실행하는 기술임
- 컨테이너 기술을 지원하는 다양한 프로그램 중 하나인 Docker
- 다양한 운영체제에서 사용가능하지만 리눅스 환경에서 제일 효과적으로 사용 가능함
- 리눅스 네임 스페이스와 cqroups와 같은 커널 기능을 사용하여 가상화 시킴
가상 머신
- Hypervisor을 이용해 하나의 host에서 여러 개의 OS를 생성하는 방법
- OS는 Guest OS라고 하며 서로 완전히 독립된 공간을 가짐 -> virtual machine
- Guest OS를 위한 library, kernel을 모두 포함하기 때문에 배포 image 생성 시 크기가 커짐
이미지
- 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
- 이미지 종류가 엄청 많아서 골라서 사용하는 것
컨테이너
- 이미지를 독립된 환경에서 사용하기 위해 쓰이는 것
- 가상 공간을 생성하기 위해 Process 단위의 독립 공간을 만드는 방법
- 컨테이너 안에는 애플리케이션 구동을 위한 파일만 존재하며 kernel은 Host OS에서 공유받음
컨테이너 사용 이유
- 같은 일을 처리해도 서버마다 운영 기록이 다름 (버전, 패키지 등)
- 이런 차이가 error를 만듦
- 이런 서버들을 눈송이 서버(Snowflakes Server) 라고 부름
- 애플리케이션의 개발과 배포가 편해짐
- 도커 컨테이너는 Host OS위에서 격리된 공간이기 때문에 권한을 주지 않는 Host OS에 영향을 끼치지 않음
- 운영 환경 배포시 image만 만들어서 배포하면 됨
- 여러 애플리케이션의 독립성과 확장성이 높아짐
- Microservices 구조
- 여러 모듈을 독립된 형태로 구성하여 언어에 종속되지 않고 변화에 빠르게 대응할 수 있음
- Microservices 구조
서버 코드 관리 하는 방법
- 문서 도구에 기록하거나 tmux-xpanes 같은 도구를 사용함
- Docker
Docker 구조
- Docker file : 서버 운영 기록을 코드화 한 것
- Docker image : 도커 파일 + 운영 기록을 실행할 시점
- 실행 시점에 상관없이 구성 시점을 고정할 수 있음! -> 2년전에 실행하든 지금 실행하는 서버의 구성을 일정하게 구성함
Docker file 구성 방법
테스트 주도 개발 TDD 방식을 사용
- 도커 파일 만들기
- 도커 이미지 만들기 (실패하면 다시 1번)
- 필요없는 부분 지우고 합칠 부분 합치기 (=효율화)
- 1번으로 돌아감
한계
- 서비스가 커지면 관리하기가 힘듦(컨테이너 양이 많아서)
https://www.44bits.io/ko/post/why-should-i-use-docker-container
https://velog.io/@iuliet716/Docker%EC%9D%98-%EC%97%AD%ED%95%A0%EA%B3%BC-%EC%9E%A5%EC%A0%90
728x90
'Ubuntu' 카테고리의 다른 글
[Nvidia] Ubuntu CUDA 10.2 설치 (0) | 2022.10.02 |
---|---|
[Nvidia] Nvidia driver 설치 (0) | 2022.10.02 |
[Nvidia] Nvidia CUDA 완전 제거 (0) | 2022.10.02 |
[Docker] Nvidia-docker 설치하기 (0) | 2022.10.02 |
[Ubuntu] 계정 추가하기 (0) | 2022.09.26 |