[1. Docker]
1. 도커란?
- 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
- 도커는 데이터 또는 프로그램을 격리시키는 기능을 제공한다
- 도커를 통해 애플리케이션을 관리하는 방식과 동일한 방법으로 인프라를 관리할 수 있다
- 리눅스 운영체제에서만 동작 (리눅스 운영체제가 동작하는 것을 전제로 함)
※ 프로그램을 독립된 환경에 격리시키는 이유 : 하나의 프로그램은 여러개의 프로그램으로 이루어진 경우가 많다. 어떤 프로그램C기 여러개의 프로그램(A, B)에 연동되어 있는 경우, 하나의 프로그램B만을 위해 수정된다면 다른 프로그램A가 작동하지 않을 가능성이 크다. 이런 문제를 방지하기 위해 [프로그램A + 프로그램], [프로그램B + 수정된 프로그램]과 같이 나누어 독립적으로 격리하면 프로그램C를 둘 중 하나의 프로그램을 위해 수정해도 문제가 발생하지 않는 것이다.
2. 도커를 사용하는 이유
- 애플리케이션을 인프라에서 분리해 소프트웨어를 신속하게 제공할 수 있다
- 코드 작성과 프로덕션 환경 실행 사이의 지연 시간을 크게 줄일 수 있다
- 애플리케이션 운영을 표준화할 수 있다
- 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보할 수 있다
- 간단한 구문을 사용해 제어가 가능하다
3. 컨테이너와 엔진
- 컴퓨터에 설치된 프로그램을 각각 독립된 환경으로 나눔
- 독립된 환경 = 컨테이너
- 컨테이너를 관리하는 기능을 제공하는 것 = 도커
- 도커를 사용하기 위해 설치해야 하는 소프트웨어 = 도커 엔진
[2. 서버와 도커]
1. 서버란
- 기능적 의미 : 어떤 서비스를 제공하는 것
- 물리적 의미 : 물리적으로 존재하는 것
- 물리적으로 존재하는 서버에 기능적 의미의 서버를 여러 개 둘 수 있다!
2. 도커의 사용
- 한 대의 컴퓨터(물리적 서버)에서 여러개의 웹 서버(기능적 의미)를 띄우는 경우 → 물리서버의 개수를 줄여 비용이 감소되나, 서로의 환경을 건드리게 될 수 있음
- 도커를 사용하여 한 대의 컴퓨터에 여러개의 웹 서버를 띄우는 경우 → 비용도 감소되고 각 웹 서버가 독립된 환경에서 안정적으로 구동됨
[3. 컨테이너]
1. 컨테이너의 특징
- 컨테이너는 프로그램이 격리된 독립적인 환경
- 컨테이너 속 프로그램의 명령을 전달하기 위해 필요한 최소한의 리눅스 일부가 들어있음 (운영체제 전체가 있는 것이 아니므로, 가벼움)
- 컨테이너의 정보를 내보낼 수 있음
- 내보낸 정보를 다른 도커 엔진에서 복원함
- 위의 과정으로, 컨테이너는 자유로이 옮길 수 있는 특징을 가짐
- 즉, 하나의 컨테이너를 배포하면 여러 사람이 동일한 환경을 사용할 수 있는 것
- 도커를 통해 운영체제가 달라도 컨테이너를 옮길 수 있음 → 물리적 환경 / 서버 구성의 차이를 무시할 수 있어 그로 인한 문제를 방지
[4. 도커, 가상화 기술, AWS EC2]
1. 가상화 기술과 도커
가상화 기술 | 도커 |
- 가상의 물리 서버를 만드는 것 - 물리적인 개념이 아니라 소프트웨어 환경이지만 실질적으로 물리서버와 동등 - 운영체제 또한 제약이 없이 아무 것이나 설치 가능 - 어떤 소프트웨어도 실행 가능 |
- 기능의 일부를 물리서버에 맡겨 컴퓨터에 의존하는 형태 - 컨테이너의 내용 또한 운영체제(리눅스)가 됨 |
2. AWS EC2와 도커
- AWS EC2에는 인스턴스라는 컨테이너와 비슷한 개념이 있으나, EC2 또한 가상화 개념
- AWS EC2라는 호스팅 서비스를 이용하면 별도의 가상 서버가 필요 없이 컨테이너 이미지를 그대로 실행 가능
'Docker' 카테고리의 다른 글
[AWS EC2, Github Action, Docker, Node] CICD 배포하기(1) - Dockerfile 만들기 (0) | 2024.08.06 |
---|---|
[Docker] 도커파일 작성법 (Node.js) (0) | 2024.08.02 |
[Docker] 도커의 기본적인 사용법, 실습 (0) | 2024.07.25 |
[Docker] 도커의 동작 원리 (0) | 2024.07.25 |