1. Docker(도커)
- 애플리케이션을 개발/배포/실행 하기 위한 오픈소스 플랫폼
- 컨테이너화 기술을 기반으로 하여 애플리케이션을 격리된 환경에 패키징하고 실행할 수 있도록 지원함
- 장점
- 가볍고 빠르게 생성됨, 호스트 시스템의 자원을 효율적으로 활용 가능
- 개발/테스트/배포 환경 간의 일관성 있는 실행 환경을 제공하여 일관성 유지
- 서버 확장이 용이
- 배포가 쉬움
- 다양한 언어/프레임워크 지원
- 단점
- 동일한 호스트 시스템을 공유 하기 때문에 보안 취약점 발생 위험
- 컨테이너는 일시적이기 때문에 영구적인 데이터 저장이 필요한 경우 관리가 복잡할 수 있음
- 호스트 시스템에 의존하기 때문에 호스트 환경에 따라 컨테이너에 영향을 미칠 수 있음
2. Docker는 클라이언트 서버 아키텍처를 사용
2.1 클라이언트(Client)
- Docker CLI(Command Line Interface)를 통해 Docker를 관리하고 컨테이너를 생성/실행/중지/삭제하는 등의 작업을 수행한다.
- Docker Host와 통신하여 컨테이너를 관리
- Docker Registry에서 이미지를 검색하고 다운로드 가능
2.2 도커 호스트 (Docker Host)
- Docker 엔진을 실행하는 시스템을 말함, Docker daemon 이 실행되는 컴퓨터 또는 가상머신을 의미
- 컨테이너의 생성/실행/관리를 담당하며 클라이언트의 요청을 받아들여 해당 작업을 수행
- 여러 개의 컨테이너를 동시에 실행 가능하며, 각 컨테이너는 호스트 시스템의 리소스를 공유하면서 독립적으로 실행됨
2.3 도커 레지스트리(Docker Registry)
- Docker 이미지를 저장하고 공유하는 저장소
- 클라이언트가 이미지를 검색하고 다운로드할 수 있도록 제공하며, 이미지의 업로드, 버전 관리 등도 가능
- ex) Docker Hub
https://hub.docker.com/
2.4 도커 이미지(Docker Image)
- 애플리케이션을 실행하기 위한 파일 시스템과 실행할 애플리케이션에 대한 설정 등을 포함하는 패키지
- 여러 레이어로 구성되어 있음
- ex) 도커 이미지안에는 Phtyon 레이어, Redis 레이어가 구성되어 있음
- 레이어는 읽기 전용이며 변경되지 않음
- 이미지는 일종의 템플릿으로, 컨테이너를 생성하는 데 사용됨
- 즉, 컨테이너는 이미지를 기반으로 생성되며, 이미지를 수정하면 새로운 버전의 컨테이너를 생성 가능
2.5 도커 컨테이너(Docker Container)
- 도커 이미지를 실행한 인스턴스
- 즉, 이미지가 실제로 실행되어 동작하는 상태
- 컨테이너는 격리된 환경에서 실행되며, 호스트 시스템의 리소스를 공유하면서 독립적으로 실행됨
- 각 컨테이너는 자체 파일 시스템, 네트워크, 프로세스 공간을 갖고 있음
- 종료시, 모든 변경 사항이 사라지며, 새로운 컨테이너 생성시 재적용 필요
3. 컨테이너 동작 방식
3.1 Docker Hub 이미지 검색
클라이언트는 원하는 이미지를 도커 허브를 통해서 검색한다
$ docker search nginx
3.2 Docker Image 다운로드
검색된 이미지를 다운로드 받는다
$ docker pull nginx:latest
3.3 컨테이너 생성 및 실행
다운로드 받은 이미지를 기반으로 컨테이너 생성 및 실행 ex) docker run
- -d: 백그라운드에서 실행
- --name: 컨테이너 이름 지정
- -p: 호스트와 컨테이너 간의 포트 매핑 설정
$ docker run -d --name web -p 80:80 nginx:latest
참고
[따배도] 3.1 도커 컨테이너 살펴보기 : 이론편
https://www.youtube.com/watch?v=m454YTyPWSk&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=9
'Docker' 카테고리의 다른 글
[Docker] Docker 컨테이너 생성 (0) | 2024.02.14 |
---|---|
[Docker] Docker 컨테이너 간단한 실습 예제 (1) | 2024.02.06 |
[Docker] Docker 관리자 권한 부여 (0) | 2024.02.05 |
[Docker] 로컬 환경 구성 6 - CentOS Docker 설치 (0) | 2024.02.05 |
[Docker] 로컬 환경 구성 5 - Ubuntu Docker 설치 (0) | 2024.02.05 |