🐳 컨테이너와 도커
최근 들어 컨테이너 기술에 대해 공부하고 있다. 처음에는 가상 머신(VM)과 뭐가 다른 건지 헷갈렸는데, 이제 조금씩 감이 오는 것 같다. 컨테이너는 애플리케이션이 한 환경에서 다른 환경으로 이동할 때 필요한 모든 종속성을 함께 패키징하는 일종의 표준 단위라고 한다. 쉽게 말해, 내 코드가 어디서든 같은 환경에서 실행될 수 있도록 보장해주는 것이다.
🎯 컨테이너의 장점은?
컨테이너를 사용하면 애플리케이션 간의 종속성 충돌 문제를 해결할 수 있다. 예를 들어, 프로젝트 A는 Python 3.8을 필요로 하고, 프로젝트 B는 Python 3.10을 사용해야 하는 경우를 생각해보자. 만약 같은 환경에서 이 두 가지 프로젝트를 실행하려고 하면 충돌이 발생할 것이다. 하지만 컨테이너를 사용하면 각각의 프로젝트를 독립적인 환경에서 실행할 수 있어 이러한 문제를 피할 수 있다.
그리고 컨테이너는 가상 머신과 달리 훨씬 가볍다. VM은 운영체제(OS) 자체를 포함하기 때문에 무겁고, 실행 속도도 느리다. 반면, 컨테이너는 호스트 OS의 커널을 공유하면서도 격리된 환경을 제공하기 때문에 가볍고 빠르다.
🐋 도커(Docker)란?
도커는 컨테이너를 쉽게 만들고 관리할 수 있도록 도와주는 플랫폼이다. 직접 컨테이너를 만들고 실행하려면 여러 가지 설정을 해야 하는데, 도커를 사용하면 간단한 명령어만으로 컨테이너를 손쉽게 생성하고 실행할 수 있다.
도커의 가장 큰 장점 중 하나는 IaaS(인프라 서비스)와 PaaS(플랫폼 서비스)의 장점을 모두 갖고 있다는 점이다. 즉, 유연성과 이식성이 뛰어나고, 운영 비용도 효율적이다. 특히, 한 컴퓨터에서 작업한 환경을 도커를 통해 그대로 패키징하면, 다른 컴퓨터에서도 동일한 환경을 손쉽게 구축할 수 있다. 이식성이 뛰어나니 협업할 때도 상당히 유용할 것 같다.
🔄 도커의 기본 개념
도커를 이해하려면 기본적인 구성 요소를 살펴볼 필요가 있다.
📄 도커파일 (Dockerfile)
도커파일은 컨테이너 환경을 정의하는 설정 파일이다. 예를 들어, 특정 패키지를 설치하거나 환경 변수를 설정하는 내용을 이 파일에 기록할 수 있다. 그리고 이 도커파일을 빌드하면 도커이미지가 생성된다.
📦 도커이미지 (Docker Image)
도커이미지는 컨테이너 실행에 필요한 파일, 설정 값, 종속성 등을 포함한 일종의 템플릿이다. 중요한 점은 이미지 자체는 불변(immutable)이라는 것이다. 즉, 한 번 만들어진 이미지는 변경되지 않는다. 하나의 이미지에서 여러 개의 컨테이너를 생성할 수 있으며, 컨테이너의 상태가 바뀌더라도 원본 이미지는 그대로 유지된다.
🚀 도커 컨테이너 (Docker Container)
도커 컨테이너는 도커이미지를 실행한 인스턴스라고 보면 된다. 실행된 컨테이너는 실제로 컴퓨팅 자원과 연결되며, 내부에서 애플리케이션이 동작하게 된다. 즉, 컨테이너는 애플리케이션이 실행되는 독립적인 공간인 셈이다.
🤔 마무리하며
도커를 사용하면 개발 환경을 보다 쉽게 관리할 수 있다는 점이 상당히 매력적이다. 하지만 아직 실전에서 어떻게 활용해야 할지는 감이 잘 안 온다. 캡스톤 디자인을 진행하면서 좀 더 공부해야겠다.
'CS 공부' 카테고리의 다른 글
# 내부 변경에도 변하지 않는 API (0) | 2025.02.15 |
---|---|
# 데이터 교환 형식 - XML (0) | 2025.02.15 |
# 데이터 교환 형식 - JSON과 직렬화, 역직렬화 (0) | 2025.02.15 |
# CI/CD (1) | 2025.02.13 |
# IaaS, PaaS, SaaS (0) | 2025.02.12 |