
도커는 애플리케이션과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 오픈소스 가장화 플랫폼이다. Go 언어로 작성된 이 기술은 리눅스 컨테이너를 기반으로 하며, 개발자가 애플리케이션을 더 쉽게 만들고 빠르게 배포할 수 있도록 설계되었다.
가상머신은 각각 완전한 게스트 OS를 포함하지만, 도커 컨테이너는 호스트 OS의 커널을 공유하여 더 가볍고 빠르게 실행함
컨테이너는 호스트 OS의 리소스를 논리적으로 분리하여 사용하며, 각 컨테이너는 독립적으로 격리시킴
컨테이너는 별도의 OS를 부팅할 필요가 없이 거의 즉시 실행함
가상머신은 하이퍼바이저와 게스트 OS로 인한 오버헤드가 크지만, 컨테이너는 이러한 오버헤드가 현저히 적음

컨테이너를 생성하고 관리하는 주체로, 도커의 핵심 기술로 다양한 Linux 배포판과 Windows에서 컨테이너를 지원하는 클라이언트-서버 애플리케이션
실행 중인 도커 이미지의 인스턴스로, 각 컨테이너는 자체 파일 시스템, 네트워크 스택, 프로세스 공간을 가지며, CPU와 메모리 시소스 제한이 정의되어 있음
컨테이너로 실행될 소프트웨어 모음으로, 애플리케이션 코드, 런타임, 라이브러리, 시스템 도구 등 실행에 필요한 모든 것을 포함함. 이미지는 변경할 수 없으며, 수정이 필요할 경우 새로운 이미지를 생성
이미지를 저장하고 배포하는 저장소로, docker Hub가 대표적인 공개 레지스트리임
Docker는 다양한 형태의 이미지를 기반으로 실행됨

# 이미지 검색
docker search python
# 이미지 다운로드
docker pull python:3.12-slim
# 로컬 이미지 목록 확인
docker images
# 이미지 삭제
docker rmi 이미지ID
# 컨테이너 실행 (포트 연결)
docker run -d -p 8080:80 --name myweb nginx
# 실행 중인 컨테이너 목록
docker ps
# 모든 컨테이너 목록 (종료 포함)
docker ps -a
# 컨테이너 중지
docker stop myweb
# 컨테이너 삭제
docker rm myweb
# 컨테이너 내부 접속
docker exec -it myweb /bin/bash
# 로그 확인
docker logs myweb
# 시스템 정리 (중지된 컨테이너, 사용 안 하는 이미지 삭제)
docker system prune -a
👉 앞으로 블로그 연재로 도커 Compose, 실전 배포 예시까지 확장하면 더 유용한 글이 될 것 같습니다.