개발 os는 윈도우 배포 os는 리눅스 -> environment dispariy
도커가 이 문제점을 해결해준다
도커를 양쪽에 설치하고 도커가 연결다리 역할 해줌
도커 컨테이너 : 하나의 같은 서버에서 각기 다른 환경의 컨ㅌㅔ이너 생성 가능
즉, 새로운 서버 매번 새로 사고, 설정하고 할 필요없이 컨테이너 수를 늘리면 됨.
컨테이너 오케스트레이션 -> 대규모 애플리케이션 배포할 수 있도록 컨테이너의 관리를 자동화해주는 프로세스
1. 도커를 설치한다 (개발환경os와 서버os에 둘다)
2. 도커파일을 만들고, 원하는 환경설정을 세팅한다 그러면 도커는 이를 어떤머신이든 해당 환경을 설정해준다
3. 컨테이너 는 독립적이기 때문에 원하는 환경설정 마다 모듈식으로 관리 가능!
Docker의 주요 개념:
- 도커 이미지(Docker Image):
- Docker 컨테이너를 생성하는 데 필요한 읽기 전용 템플릿입니다. 이미지에는 애플리케이션, 라이브러리, 종속성, 설정 파일 등이 포함됩니다.
- 예를 들어, Node.js 애플리케이션을 Docker 이미지로 만들면, 그 안에는 Node.js 런타임과 애플리케이션 코드, 필요한 모든 라이브러리가 포함됩니다.
- 도커 컨테이너(Docker Container):
- 이미지로부터 실행된 인스턴스로, 실제로 실행되는 애플리케이션입니다. 컨테이너는 독립된 환경에서 동작하며, 시스템 리소스를 격리하여 사용할 수 있습니다. 하나의 서버에서 여러 컨테이너를 실행할 수 있으며, 각 컨테이너는 서로 독립적으로 동작합니다.
- 예를 들어, Node.js 애플리케이션의 컨테이너를 실행하면, 이 컨테이너는 다른 애플리케이션과 격리된 상태에서 해당 애플리케이션을 실행합니다.
도커와 도커 컨테이너의 차이
- **도커(Docker)**는 전체적인 컨테이너 관리 플랫폼입니다. 도커 엔진을 사용해 이미지를 빌드하고, 그 이미지를 컨테이너로 실행하는 전체 과정을 관리합니다.
- **도커 컨테이너(Docker Container)**는 도커 이미지를 기반으로 실행되는 격리된 실행 환경입니다. 즉, 도커가 제공하는 플랫폼 위에서 컨테이너가 실제로 동작하는 애플리케이션입니다.
좀더 확실하게 이해를 체감하기위해 실생활 예시로 비유해서 설명하라고 시켰다.
실생활 비유로 설명:
-
- 1. 도커 이미지 = 자동차 설계도
- 도커 이미지는 자동차를 만들기 위한 설계도라고 볼 수 있습니다. 설계도에는 자동차를 어떻게 만들고 어떤 부품을 사용할지에 대한 모든 정보가 담겨 있습니다. 하지만 설계도 자체는 자동차가 아닙니다.
- 예를 들어, 이미지에는 애플리케이션 코드, 라이브러리, 필요한 환경 등이 포함되어 있고, 이 이미지로부터 실제로 도커 컨테이너(자동차)가 만들어집니다.
- 도커 컨테이너는 설계도를 기반으로 실제로 만들어진 자동차입니다. 각 자동차는 실제로 도로 위를 달릴 수 있는 상태이고, 컨테이너가 애플리케이션을 실행하는 것처럼, 자동차는 운행할 준비가 되어 있습니다.
- 하나의 자동차는 도로에서 다른 자동차와 독립적으로 운행하지만, 모두 **같은 도로(호스트 OS)**를 사용합니다.
- **호스트 운영체제(OS)**는 도로와 주유소에 해당합니다. 여러 자동차(컨테이너)는 같은 도로 위에서 운행되고, 주유소에서 기름(서버 자원: CPU, 메모리, 네트워크 등)을 공급받습니다.
- 자동차들은 각자 독립적으로 움직이지만, 도로와 주유소라는 자원을 공유하게 됩니다. 한편, 각 자동차는 독립적으로 움직이기 때문에 다른 자동차가 고장 나더라도 자신의 주행에는 영향을 받지 않습니다.
- 도커 컨테이너는 다른 컨테이너들과 독립된 환경에서 실행되며, 문제가 생기더라도 다른 컨테이너에 영향을 주지 않습니다. 마치 도로 위에서 각 자동차가 독립적으로 주행하는 것과 같습니다. 한 자동차가 사고를 내도 다른 자동차는 계속 운행할 수 있습니다.
- 도커 컨테이너를 확장한다는 것은 더 많은 자동차를 생산해서 도로에 올리는 것과 같습니다. 트래픽이 증가하면 더 많은 자동차가 필요하듯, 애플리케이션 트래픽이 증가하면 더 많은 도커 컨테이너를 생성해 요청을 처리할 수 있습니다.
- 도커 이미지는 자동차의 설계도로, 자동차(컨테이너)를 만들기 위한 기본 청사진입니다.
- 도커 컨테이너는 실제 자동차로, 애플리케이션을 실행하는 환경입니다.
- 호스트 OS는 도로와 주유소처럼 여러 자동차가 공유하는 자원을 제공합니다.
- 1. 도커 이미지 = 자동차 설계도
이제 이해가 갔다.
도커가 없으면, 설계도도 직접 작성해야하고, 자동차도 직접 만들어야함.
그리고 내 도로에 자동차 한대밖에 못씀. 비효율적.
'기술면접준비' 카테고리의 다른 글
CORS 가 무엇인지, 문제 해결은 어떻게? (0) | 2024.10.12 |
---|---|
내가 이해한 배포개발환경 vs 로컬개발환경 (2) | 2024.10.11 |
github action을 이용한 CICD 파이프라인 자동화 (0) | 2024.10.10 |
JVM (0) | 2024.10.10 |
JAVA 8 버전부터 추가된 Stream (0) | 2024.10.09 |