init
과거에는 애플리케이션을 다양한 환경에 배포하기 위해 각 환경별로 수동 설정을 해야 했으며, 종속성 문제와 버전 충돌을 해결하는 데 많은 노력이 필요했습니다.
이 과정에서 발생하는 오류는 흔한 일이었고, 개발팀과 운영팀 간의 원활한 협업을 방해하는 주요 요인이 되었습니다. 특히, 대규모 시스템에서는 이러한 복잡성이 더욱 두드러졌습니다.
그러나 Docker의 등장은 이러한 문제를 해결하는 데 있어 새로운 돌파구를 제시했습니다.
컨테이너화 기술을 기반으로 한 Docker는 개발과 운영의 효율성을 획기적으로 개선하고, 애플리케이션의 이식성과 관리 편의성을 한층 높였습니다.
덕분에, 복잡한 환경 설정 없이도 일관된 실행 환경을 보장할 수 있게 되었고, 개발자들은 빠르고 안정적인 소프트웨어 배포를 실현할 수 있게 되었습니다.
도커란 무엇인가?
- 도커(Docker)는 소프트웨어 기술을 활용하여 애플리케이션을 더 쉽게 개발, 배포 및 실행 할 수 있도록 도와주는 오픈소스 플랫폼입니다.
- 애플리케이션과 필요한 라이브러리, 설정 등을 하나의 "컨테이너"로 묶어 어디서든 동일하게 실행되도록 도와줍니다. 그렇기 때문에 다른 애플리케이션이나 시스템에 영향을 미치지 않습니다.
도커 사용 목적
도커 사용 목적 | 설명 |
개발 환경 표준화 | 모든 개발자가 동일한 환경에서 작업할 수 있도록 보장합니다. |
애플리케이션 배포 자동화 | 배포 시간을 단축하고, 안정적인 배포 프로세스를 구현할 수 있습니다. |
멀티 클라우드 지원 | 특정 클라우드 플랫폼에 종속되지 않고, 다양한 환경에서 일관되게 작동합니다. |
테스트 환경 구성 | 테스트 환경을 빠르게 생성하고, 필요한 경우 제거하여 효율적으로 자원을 사용할 수 있습니다. |
DevOps 지원 | CI/CD 파이프라인에 통합되어 빌드, 테스트, 배포 과정을 자동화할 수 있습니다. |
도커 아키텍처 동작 흐름
Docker를 이용하여 '클라이언트 - 서버' 를 구성하는 아키텍처 입니다.
- 사용자는 Client에서 명령을 실행(docker build, docker pull, docker run)합니다.
- 명령은 Docker Daemon이 있는 Docker Host로 전달되어 이미지 생성 또는 컨테이너 실행 작업을 처리합니다.
- 필요 시 Docker Host는 Registry에서 이미지를 가져와 작업을 수행합니다.
- 이미지를 실행하여 컨테이너를 생성하고 애플리케이션을 실행합니다.
도커 주요 용어 요약
1) 컨테이너(Container)
- 도커의 핵심 개념 중 하나로, 애플리케이션과 그 종속성을 격리된 환경에서 실행하는 단위입니다.
- 호스트 시스템의 리소스와 격리되어 있어 다른 컨테이너와 시스템에 영향을 받지 않습니다.
2) 이미지(image)
- 컨테이너를 생성하기 위한 템플릿으로, 애플리케이션 코드, 라이브러리, 종속성, 설정 파일 등을 포함하며, 불변성을 가집니다.
3) 도커 허브(Docker Hub)
- 도커 컨테이너 이미지를 공유하고 관리하기 위한 클라우드 기반 레지스트리입니다.
- 공식 이미지와 커뮤니티에서 제공하는 이미지를 검색하고 다운로드할 수 있습니다.
- 개인 프로젝트를 위해 이미지를 업로드하거나 공유할 수도 있습니다.
4) 도커 명령 인터페이스(Docker CLI)
- Docker를 명령어로 조작할 수 있도록 하는 도구입니다.
- 컨테이너 생성, 실행, 중지, 삭제, 이미지 빌드 등의 작업을 CLI를 통해 수행할 수 있습니다.
5) 도커 레지스트리(Docker Registry)
- Docker 이미지를 저장하고 관리하는 저장소입니다.
- Docker Hub는 대표적인 Docker 레지스트리이며, 개인이나 기업이 자체적으로 구축할 수도 있습니다.
- 이미지를 업로드하고, 필요할 때 이를 다운로드받아 컨테이너를 실행할 수 있습니다.
6) 도커 컴포즈(Docker Compose)
- 여러 컨테이너를 정의하고 관리할 수 있는 도구입니다.
- docker-compose.yml 파일에 컨테이너 설정을 정의하여 복잡한 다중 컨테이너 애플리케이션을 손쉽게 실행할 수 있습니다.
7) 도커파일(Docker File)
- Docker 이미지를 빌드하기 위한 설정 파일입니다.
- 애플리케이션 빌드 과정을 단계별로 정의하며, 텍스트 파일 형식으로 작성됩니다.
- 주요 명령어로 FROM, RUN, CMD, COPY, EXPOSE 등이 있습니다.
8) 도커 볼륨(Docker Volume)
- 컨테이너와 호스트 간 데이터를 영구적으로 저장하고 공유할 수 있는 스토리지 방식입니다.
- 컨테이너가 삭제되더라도 데이터는 유지됩니다.
9) 도커 데몬(Docker Deamon)
- 클라이언트에서 요청한 ‘도커 명령어를 처리’하고 도커 컨테이너를 관리하는 백그라운드 프로세스입니다.
10) 도커 네트워크(Docker Network)
- 컨테이너 간, 또는 컨테이너와 호스트 간의 통신을 설정하고 관리하기 위한 기능입니다.
- 도커는 기본적으로 컨테이너를 네트워크에 연결하여 통신할 수 있는 환경을 제공합니다.
마무으리
도커 기초개념을 정리하면서 컨테이너와 이미지의 차이, 그리고 도커의 전체적인 동작 흐름을 이전보다 잘 이해하게 된 것 같습니다. 아직 도린이지만, 단계별로 학습과 실습을 통해 배워나가겠습니다. 앞으로 실전에서도 활용할 수 있도록 꾸준히 익혀가야겠습니다! 🚀
'Dev > Docker' 카테고리의 다른 글
[Docker] Docker 초보 탈출! 명령어 총 정리 (0) | 2025.02.13 |
---|---|
[Docker] 컨테이너 라이프 사이클 & CLI (0) | 2025.02.11 |
[Docker] Docker Compose 설치 & 개념 정리 (0) | 2025.02.07 |
[Docker] 포테이너(Portainer) 설치 & 개념 정리 (1) | 2025.02.06 |
[Docker] Ubuntu 24.04 Docker 설치 (0) | 2025.02.05 |