[Docker] Docker 기본 사용법 정리 - nicewoong
컨테이너 기반의 오픈소스 가상화 플랫폼
- 컨테이너 ? 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
- 컨테이너 런타임 ? 컨테이너를 다루는 도구 → 가장 유명한 것 → 도커
Docker
- 다양한 프로그램들과 실행 환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화할 수 있음(개발 후 사용자가 실행할 때 필요한 환경들은 한 번에 패키징하여 별 다른 설치 없이 한 번에 실행시켜주도록 하는 것)
- 프로그램의 코드 뿐만 아니라 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠르게 애플리케이션을 실행할 수 있음
⇒ 개발/실행 환경이 달라도 컨테이너로 규격화한 프로그램들이 정상적으로 작동할 수 있는 이유가 무엇일까?
: 도커 컨테이너들(도커 이미지들)이 도커 엔진 위에서 실행되기 때문
Virtual Machine VS Container
- Virtual Machine
- 하드웨어를 에뮬레이트하여, 여러 운영체제를 동시에 실행할 수 있게 해줌
- 각 VM은 전체 OS를 포함하므로 무겁고 느릴 수 있음
- Container
- OS 수준에서의 가상화로, 필요한 라이브러리와 바이너리만 포함하므로 가벼움
- VM보다 더 빠르게 실행되지만, 보안과 격리가 약함
Docker Image(도커 이미지)
- 도커에서 서비스 운영에 필요한 서버 프로그램, 코드 및 라이브러리, 컴파일된 실행 파일 등을 묶는 형태
- 즉, 컨테이너 생성(실행)에 필요한 모든 파일과 환경을 가진 것으로, 더 이상 Dependency 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 뜻함
- 컨테이너의 상태가 바뀌거나 삭제되더라도 도커 이미지는 변하지 않음
- 도커 이미지를 실행(run)하면 ⇒ 도커 컨테이너
- 도커 이미지는 도커 파일이라는 파일로 만들어지는데, 이러한 도커 파일에는 소스코드와 함께 의존성 패키지 등 사용한 설정 파일을 관리하기 쉽도록 명시됨
Docker Layer(도커 레이어)
- 여러 개의 레이어를 나누어 이미지를 구성
- ex) apache 이미지를 만든다고 하면, 기존의 Ubuntu 이미지를 base Image로 이용하고, 그 위에 필요한 다른 레이어들을 얹어서 만들 수 있음
- 레이어 방식을 사용하면 기존의 이미지 레이어를 이용해 다양한 이미지를 새로 만들 수 있음
- 기존 이미지를 이용하기 때문에 용량을 절약할 수 있음
- 컨테이너를 생성할 때도 레이어 방식을 이용해 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가함
- 이미지 레이어를 그대로 사용하면서 컨테이너가 실행 중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장되므로 여러 개의 컨테이너를 생성하더라도 최소한의 용량만 사용하게 됨
Docker Hub(도커 허브)
- 도커는 도커 허브를 통해 수많은 공개 이미지를 무료로 관리해줌
- 누구나 쉽게 도커 이미지를 만들고 배포 가능
- 호스트들은 도커 허브에서 도커 이미지를 pull 해와서 실행시킬 수 있음
- 용량이 매우 큰 이미지들도 도커 허브에서 관리해주기 때문에 사용자는 부담 없이 도커 이미지를 사용할 수 있음
'기타' 카테고리의 다른 글
[박람회] K-GEO festa (0) | 2024.11.12 |
---|---|
[쿠버네티스] 쿠버네티스란? (0) | 2024.06.13 |
[Jenkins] 젠킨스란? (0) | 2023.08.16 |
[CI/CD] CI/CD란? (0) | 2023.08.16 |
[MSA] MSA란? (0) | 2023.08.16 |