❗Docker
Docker는 소프트웨어 컨테이너 기술을 사용하여 애플리케이션을 개발, 배포, 실행할 수 있게 해주는 플랫폼이다. 주로 개발자와 시스템 관리자들이 애플리케이션을 효율적으로 관리하고 배포할 수 있도록 설계되어있고, Docker를 사용하면 애플리케이션과 그 의존성을 컨테이너라는 표준화된 유닛으로 패키징하여 어디서나 동일하게 실행할 수 있다.
❗주요 개념 및 구성 요소
- 이미지 (Image):
- Docker 이미지란 애플리케이션 실행에 필요한 모든 파일, 라이브러리, 설정 등을 포함하는 읽기 전용 템플릿
- 이미지는 애플리케이션의 특정 버전을 정의하며, 컨테이너를 생성하기 위한 청사진 역할
- 계층 구조로 구성되며, 기본 이미지를 기반으로 필요한 파일과 설정을 추가하여 새로운 이미지를 생성할 수 있음
- Docker Hub와 같은 저장소에서 이미지를 다운받아 사용할 수도 있고, 직접 이미지를 생성하여 저장할 수도 있음
- 컨테이너 (Container):
- Docker 컨테이너는 이미지를 실행한 상태로, 격리된 환경에서 애플리케이션을 실행하는 유닛
- 이 컨테이너는 이미지에서 정의된 내용을 바탕으로 애플리케이션을 실행하며, 필요한 리소스를 운영체제에서 할당받아 사용
- 컨테이너는 매우 이식성이 높아, 동일한 이미지를 사용하여 다양한 환경에서 일관된 성능과 기능을 제공
- 가상 머신과 비교하여 훨씬 경량화되어 있어 리소스 효율이 뛰어남
- 도커 허브 (Docker Hub):
- Docker Hub는 Docker 이미지를 저장하고 공유할 수 있는 클라우드 기반 레지스트리
- 사용자는 자신의 이미지를 업로드하여 다른 사람들과 공유하거나, 이미 등록된 수많은 공개 이미지를 다운받아 사용할 수 있음
- 이를 통해 개발자와 팀은 코드, 환경, 의존성을 쉽게 공유할 수 있어, 협업이 더욱 수월
- Dockerfile:
- Dockerfile은 이미지를 빌드하기 위한 스크립트 파일로, 일련의 명령어를 통해 이미지에 포함될 파일, 설정, 패키지 등을 정의할 수 있음
- 예를 들어, 기본 운영 체제 이미지에서 시작해, 필요한 소프트웨어를 설치하고, 애플리케이션 코드를 복사하고, 실행 명령어를 설정하는 과정을 Dockerfile에 기술할 수 있음
- 이를 통해 이미지를 일관되게 빌드하고 관리할 수 있습니다.
- 도커 컴포즈 (Docker Compose):
- Docker Compose는 여러 컨테이너를 정의하고 관리하는 도구
- 복잡한 애플리케이션은 여러 개의 컨테이너(예: 데이터베이스, 웹 서버, 캐시 등)를 필요로 할 수 있으며, 이러한 컨테이너를 정의하고 함께 실행하는 과정을 자동화할 수 있음
- Compose 파일(docker-compose.yml)을 작성하여 애플리케이션의 다양한 서비스(컨테이너)를 정의하고, 이를 기반으로 전체 애플리케이션 스택을 쉽게 시작할 수 있음
❗도커의 주요 특징
- 이식성:
- Docker 컨테이너는 어디서나 동일하게 실행할 수 있도록 설계
- 개발 환경에서 실행한 애플리케이션을 그대로 프로덕션 환경으로 옮기거나, 다른 팀원이 동일한 환경에서 작업할 수 있게 해줌
- 격리성:
- Docker는 각 컨테이너가 독립적으로 실행되며, 다른 컨테이너나 호스트 시스템과 격리된 상태를 유지
- 이를 통해 애플리케이션 간의 충돌을 방지하고, 보안성을 높일 수 있음
- 리소스 효율성:
- Docker 컨테이너는 가상 머신보다 훨씬 가볍고, 시스템 리소스를 더 효율적으로 사용
- 컨테이너는 공통 운영 체제 커널을 공유하기 때문에, 추가적인 운영 체제 오버헤드가 없으며, 더 빠른 시작 시간을 제공
- 유연성 및 확장성:
- Docker는 단일 컨테이너부터 복잡한 멀티 컨테이너 애플리케이션까지 다양한 요구에 맞게 확장할 수 있음
- 애플리케이션의 개발, 테스트, 배포 과정이 매우 유연해집니다.
Docker는 현대 소프트웨어 개발 및 배포에 있어서 중요한 도구로 자리잡고 있으며, DevOps 환경에서 필수적으로 사용되고 있다.
728x90
반응형
'🔻DevOps > Docker' 카테고리의 다른 글
[Docker] 우분투에 도커 설치 후 명령어 실습 (0) | 2024.07.05 |
---|---|
[Docker] Docker 명령어(조회, 정지, 시작) (0) | 2022.12.26 |
[Docker] Java11 + Spring Boot + AWS EC2 프로젝트 배포하기 (0) | 2022.12.24 |
[Docker] 우분투 18.04 Docker 설치하기 (0) | 2022.12.24 |
[Docker] 윈도우11 Docker 설치(WSL2 설치 포함) (0) | 2022.12.23 |