Docker
도커 공부를 시작하기전에 도커가 무엇이고 왜 사용하는지부터 아는것이 중요할 것 같다.
도커란?
컨테이너 기반 가상화 도구
애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술
여기서 컨테이너란?
컨테이너는 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키지화하는 소프트웨어의 표준 단위입니다. 컨테이너 이미지는 런타임 시 컨테이너가 되며, Docker 컨테이너의 경우 이미지가 Docker 엔진 에서 실행될 때 컨테이너가 됩니다.
Docker 컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 경량의 독립형 실행 가능 소프트웨어 패키지입니다.

컨테이너
컨테이너는 코드와 종속성을 함께 패키지하는 앱 계층의 추상화입니다. 여러 컨테이너가 동일한 시스템에서 실행될 수 있으며 OS 커널을 다른 컨테이너와 공유할 수 있으며, 각 컨테이너는 사용자 공간에서 격리된 프로세스로 실행됩니다. 컨테이너는 VM보다 공간을 덜 차지하며(컨테이너 이미지의 크기는 일반적으로 수십 MB임) 더 많은 애플리케이션을 처리할 수 있으며 더 적은 수의 VM 및 운영 체제가 필요합니다.
컨테이너 이미지는 런타임 시 컨테이너가 되며, Docker 컨테이너의 경우 이미지가 Docker 엔진 에서 실행될 때 컨테이너가 됩니다. Linux 및 Windows 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너화된 소프트웨어는 인프라에 관계없이 항상 동일하게 실행됩니다. 컨테이너는 소프트웨어를 해당 환경에서 격리하고 개발과 스테이징 간의 차이에도 불구하고 소프트웨어가 균일하게 작동하도록 보장합니다.
사용하는 이유
- 효율적인 배포 및 관리:
도커는 컨테이너 기반 가상화를 제공하여 애플리케이션을 격리된 환경에서 실행하고 패키지화합니다. 이로써 애플리케이션의 종속성과 설정이 하나의 컨테이너 이미지로 캡슐화되어 배포 및 관리가 용이해집니다. - 이식성:
도커 컨테이너는 모든 종류의 환경에서 일관되게 동작하도록 설계되었습니다. 이는 개발 환경, 테스트 환경, 프로덕션 환경 등 어디서든 동일한 환경에서 애플리케이션이 실행될 수 있음을 의미합니다. - 자원 효율성:
가상 머신과는 달리 도커 컨테이너는 호스트 시스템의 커널을 공유하므로 가벼우면서도 자원을 효율적으로 사용합니다. 여러 컨테이너는 동일한 운영 체제의 커널을 공유하면서 각각 독립적으로 실행될 수 있습니다. - 빠른 배포:
도커는 이미지를 레지스트리에 저장하고 가져와서 실행하는 방식으로 동작합니다. 이는 애플리케이션 배포가 빠르고 쉽게 이루어질 수 있음을 의미합니다. 또한, 이미지의 레이어화와 캐싱을 통해 중복 다운로드를 최소화하여 네트워크 대역폭을 절약할 수 있습니다. - 스케일링 및 관리 용이성:
도커 컨테이너는 가볍고 빠르게 생성 및 제거될 수 있으며, 이는 스케일링과 관리를 훨씬 쉽게 만듭니다. 필요에 따라 컨테이너의 수를 늘리거나 줄일 수 있습니다. - 마이크로서비스 아키텍처 지원:
도커는 마이크로서비스 아키텍처에 적합하게 설계되었습니다. 각각의 마이크로서비스는 독립적으로 컨테이너화되어 관리될 수 있으며, 서로 통신할 때에도 도커 네트워킹을 통해 쉽게 연결될 수 있습니다.
What is a Container? | Docker
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing
www.docker.com
도커 파일 (Dockerfile)
도커 파일은 도커 이미지를 생성하는 설정 파일입니다. 주로 이미지를 구성하기 위한 명령어들이 포함되어 있으며 베이스 이미지, 소스 코드 복사, 의존성 설치, 환경 설정 등이 기술됩니다.
도커 이미지 (Docker Image)
도커 이미지는 도커 파일을 기반으로 빌드된 실행 환경을 담고 있는 파일입니다. 애플리케이션을 실행하는 데 필요한 모든 것을 포함하며, 도커 컨테이너를 생성하는 템플릿 역할을 합니다.
도커 컨테이너 (Docker Container)
도커 컨테이너는 도커 이미지를 실행한 상태입니다. 이미지를 기반으로 생성된 가상 환경에서 애플리케이션이 동작하는 격리된 공간이며, 호스트 시스템과는 독립적으로 동작합니다.
관계
도커 파일과 도커 이미지: 도커 파일은 도커 이미지를 빌드하기 위한 설정을 제공합니다.
도커 이미지와 도커 컨테이너: 이미지는 컨테이너를 생성하는 데 사용되며, 컨테이너는 해당 이미지를 실행한 상태입니다.
도커 파일과 도커 컨테이너: 도커 파일은 이미지를 정의하고, 해당 이미지는 컨테이너를 실행할 때 파일 시스템과 실행 환경을 제공합니다.
'CS' 카테고리의 다른 글
Docker 🐳 - dockerfile layer (0) | 2023.12.06 |
---|---|
통신시 Header, Body (0) | 2023.11.30 |
깊이 우선 탐색 (Depth-First Search, DFS) (0) | 2023.09.15 |
[자료구조] Graph (0) | 2023.09.14 |
[자료구조] Graph - JavaScript (0) | 2023.09.14 |