🤔 Docker(도커) 란 ?
Docker는 컨테이너 기반의 오픈 소스 가상화 플렛폼이다.
Docker는 애플리케이션과 그 의존성을 가상화된 컨테이너에 담아 효율적으로 실행할 수 있게 해준다.
이를 통해 다양한 운영체제와 환경에서 일관된 실행 환경을 제공하고, 개발과 운영 간의 이식성을 높여준다.
🤯 컨테이너란?
컨테이너는 도커의 핵심 개념으로,
격리된 환경에서 프로세스를 실행하기 위한 경량화된 가상화 단위로
애플리케이션과 그에 필요한 모든 종속성(라이브러리, 실행파일 등)을 컨테이너에 패키징하여 동일한 환경에서 실행할 수 있게 한다.
🧐 Docker Image
- DockerImage란 서비스 운영에 필요한 종속성(라이브러리, 실행파일 등)을 묶어서 가지고 있는 것이다.
- Dokcer 이미지들은 github와 똑같이 Docker Hub 사이트를 통해 버전관리 및 배포 Push, Pull이 가능하다.
- 또한 상태값을 가지지 않고 이미지가 한번 생성되면 변경할 수 없다.
- 같은 이미지에서 여러개의 컨테이너 생성이 가능하다.
- 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않는다.
😳 Docker File
도커 이미지를 만들기 위해서는 도커 파일이 필요하다.
도커 파일을 이용해 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있으며, 스크립트 파일이다.
주로 텍스트 형식의 명령어들로 구성되어 있으며, 이를 사용하여 이미지 빌드 과정을 자동화하고 문서화할 수 있다.
🥴 Docker 장점
- 가볍고 빠른 가상화
- 컨테이너는 가볍고 시작 시간이 짧아서 빠르게 배포하고 확장할 수 있다.
- 이식성과 확장성
- 동일한 이미지를 여러 환경에서 실행할 수 있으며, 애플리케이션을 쉽게 확장 및 축소할 수 있다.
- 효율적인 리소스 사용
- 여러 컨테이너를 단일 호스트에서 실행하여 리소스의 공유와 최적화를 가능하게 한다.
- 격리
- 각 컨테이너를 격리된 환경에서 실행하기 때문에 서로 영향을 주지 않고 독립적으로 실행된다.
- 이를 통해 애플리케이션간의 충돌을 방지한다.
🥴 Dokcer 단점
- 복잡성
- 컨테이너, 이미지, 네트워크 등의 개념과 도커 자체의 명령어와 설정에 익숙해지는 시간이 필요
- 도커의 개념과 도구들을 이해하고 사용하는데 학습 곡선이 있을 수 있다.
- 보안 취약성
- 컨테이너 간의 공격 가능성이 있으며, 적절한 보안 조치를 적용해야한다.
- 데이터 관리 어려움
- 컨테이너의 휘발성 특성 때문에 데이터를 관리하는데 어려움이 있을 수 있다.
- 영속적인 데이터 저장을 위해서 별도의 볼륨이나 데이터베이스 서비스가 필요할 수 있다.
- 호환성 문제
- 도커는 리눅스 커널의 기능을 사용하므로 일부 운영체제에서 호환성 문제가 발생할 수 있다.
'TIL' 카테고리의 다른 글
Batch Insert로 100만건 데이터 생성하기 (1) | 2024.11.20 |
---|---|
Docker - 자주 사용하는 명령어 (0) | 2024.11.19 |
JPA - QueryDSL을 이용한 동적쿼리 (0) | 2024.11.15 |
JPA - QueryDSL (1) | 2024.11.15 |
Service와 ServiceImpl 왜 나누는거지? (1) | 2024.11.13 |