[이론] 도커란?
필기자
2024-09-10 13:45
1,002
0
본문
IaaS, PaaS, SaaS는 클라우드 서비스의 세 가지 주요 모델.
도커(Docker)
Linux® 컨테이너와 VM(가상 머신)은 IT 환경에서 격리된 패키징된 컴퓨팅 환경을 제공함.
컨테이너와 도커 엔진
컨테이너를 만들려면 이미지가 필요
도커는 리눅스 컴퓨터에서 사용
데이터나 프로그램을 독립된 환경에 격리해야 하는 이유
프로그램의 격리
자유로이 옮길 수 있는 컨테이너
도커의 구조
윈도우와 macOS에서 도커 구동하기
이미지와 컨테이너 : 이미지
컨테이너로도 이미지를 만들 수 있음
이미지를 이용한 컨테이너 이동
도커 허브와 도커 이미지
도커의 장점
- IaaS (Infrastructure as a Service): 서버, 스토리지, 네트워크 같은 인프라 자원을 제공. 사용자가 운영 체제와 소프트웨어를 직접 설치하고 관리해야 함. 예: AWS EC2, Microsoft Azure, Google Cloud Compute Engine.
- PaaS (Platform as a Service): 애플리케이션 개발에 필요한 플랫폼 제공. 사용자는 애플리케이션 개발에만 집중 가능, 인프라 및 플랫폼 관리는 제공자가 담당. 예: AWS Elastic Beanstalk, Google App Engine, Heroku.
- SaaS (Software as a Service): 소프트웨어를 인터넷을 통해 서비스 형태로 제공. 사용자는 소프트웨어 설치나 관리 없이 웹 브라우저로 사용. 예: Google Workspace, Salesforce, Slack.
도커(Docker)
- 컨테이너 개념을 도입해서 데이터/프로그램을 격리시키는 기능을 제공하는 소프트웨어
- 컨테이너 환경을 손쉽게 만들 수 있는 기능과 각 컨테이너를 손쉽게 동작할 수 있는 도커 엔진 제공
- 애플리케이션를 위해 컨테이너로 패키징하고 배포하는 도구. IaaS와 PaaS에서 주로 활용됨
Linux® 컨테이너와 VM(가상 머신)은 IT 환경에서 격리된 패키징된 컴퓨팅 환경을 제공함.
- 크기 및 패키징:
- 컨테이너: 일반적으로 메가바이트 단위의 크기를 가지며, 애플리케이션과 그 실행에 필요한 최소한의 파일만 포함함. 종종 단일 기능을 수행하는 마이크로서비스를 컨테이너에 패키징함.
- VM: 일반적으로 기가바이트 단위의 크기를 가지며, 자체 운영 체제(OS)를 포함함. 여러 리소스 집약적인 작업을 동시에 수행할 수 있으며, 전체 서버, OS, 데스크탑, 데이터베이스, 네트워크 등을 추상화, 분할, 복제, 에뮬레이션함.
- 이동성 및 확장성:
- 컨테이너: 경량화 속성과 공유 운영 체제(OS)로 인해 여러 환경 간에 쉽게 이동할 수 있으며, 확장이 상대적으로 쉬움.
- VM: VM은 자체 운영 체제를 가지고 있어 이동성이 상대적으로 낮으며, 확장하기 위해서는 추가 리소스가 필요함.
- 리소스 분리:
- 컨테이너: 컨테이너는 호스트 OS 커널을 공유하므로 리소스 분리가 상대적으로 덜 격리됨.
- VM: VM은 자체 운영 체제를 가지고 있어 더 격리된 환경을 제공하며, 리소스를 더욱 강력하게 분리할 수 있음.
- 용도:
- 컨테이너: 주로 미세한 서비스 또는 컨테이너 오케스트레이션 플랫폼(예: Docker, Kubernetes)을 통해 애플리케이션 배포와 관리에 사용됨.
- VM: 다양한 용도로 사용되며, 여러 개의 VM을 호스팅하는 가상화 환경에서 서버 가상화, 개발 환경 분리, 테스트 및 백업 등 다양한 용도로 활용함.
- 요약
- 컨테이너는 경량하고 이동성이 뛰어나며, 주로 애플리케이션 수준의 격리를 제공.
- VM은 무거우며 격리가 강화되어 다양한 용도로 활용되지만 이동성이 상대적으로 낮음.
컨테이너와 도커 엔진
- 컨테이너 : 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술
- 도커 엔진 : 도커 소프트웨어의 본체이며, 도커 엔진이 있어야 컨테이너를 생성하고 실행시킬 수 있음
컨테이너를 만들려면 이미지가 필요
- 이미지 : 컨테이너 실행에 필요한 파일과 설정값들을 포함하고 있고 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 변하지 않음
도커는 리눅스 컴퓨터에서 사용
- 리눅스 운영체제에서 사용하는 것을 전제로 만들어 졌기 때문에 반드시 리눅스 운영체제가 필요
- 컨테이너 안에서 동작하는 프로그램도 리눅스용 프로그램
데이터나 프로그램을 독립된 환경에 격리해야 하는 이유
- 데이터/프로그램이 격리되지 않으면 서로에게 영향을 줄 수 있고 서로에게 강한 의존성을 가질 가능성이 있음
- 공유하는 프로그램, 파일, 라이브러리 등을 한 개의 프로그램만을 위해 수정하게 되면 오류 발생 가능성이 있음
프로그램의 격리
- 도커 컨테이너를 사용해 프로그램을 격리하면 여러 프로그램이 한 서버에 실행되면서 발생하게 되는 문제들을 대부분을 해결할 수 있음
자유로이 옮길 수 있는 컨테이너
- 도커만 설치돼 있으면 운영체제가 달라도 컨테이너를 옮길 수 있음
- 도커를 이용하면 물리적 환경의 차이, 서버 구성의 차이를 무시할 수 있으므로, 운영 서버와 개발 서버의 환경 차이로 인한 문제를 방지할 수 있음
도커의 구조
- 물리 서버 > 리눅스 운영체제 > 도커 엔진 > 컨테이너
- 도커에서는 컨테이너 속에 운영체제의 주변 부분이 들어 있어 프로그램의 명령을 전달받고 이를 커널에 전달하는 구조로 되어 있음
윈도우와 macOS에서 도커 구동하기
- 가상 환경 위에 리눅스 운영체제를 설치하고 그 위에서 도커를 실행
- 도커를 실행하는데 필요한 리눅스 운영체제를 포함하는 패키지를 설치하여 실행
이미지와 컨테이너 : 이미지
- 컨테이너의 설계도 역할 수행, 컨테이너를 생성하는데 사용
- 이미지를 사용하면 동일한 컨테이너를 여러 개 생성 가능
컨테이너로도 이미지를 만들 수 있음
이미지를 이용한 컨테이너 이동
도커 허브와 도커 이미지
- 공개된 컨테이너 이미지가 모여 있는 곳, 원하는 이미지를 다운받을 수 있고 누구든지 이미지를 등록하고 공유
도커의 장점
- 한 대의 물리 서버에 여러 대의 서버를 띄움
- 서버 관리가 용이함
- 다루기 쉬움
- 호스트 서버에 문제가 생기면 모든 컨테이너에 영향을 미침
- 동일한 개발 환경 제공
- 새로운 버전의 테스트
- 동일한 서버가 여러 대 필요한 경우
댓글목록0