Docker는 애플리케이션 실행 환경을 컨테이너로 관리하는 도구다.
이 글에서는 Docker의 기본 개념부터 Linux, Kernel, Container, Image, Dockerfile, Docker Compose, Port, Environment Variable, Volume, Database, Migration까지 Docker를 이해하기 위해 필요한 핵심 개념을 초보자 기준으로 설명한다.
또한 Docker가 왜 필요한지, 가상머신과 어떤 차이가 있는지, 실제 프로젝트에서 Docker가 어떤 문제를 해결하는지 함께 정리한다.
Windows 환경에서 Docker를 사용하기 위해 필요한 Docker Desktop, WSL2, Ubuntu의 역할을 정리하고, 설치 전 확인해야 할 개념과 설치 후 확인 명령어를 설명한다.
Docker 설치가 끝났다면 이제 컨테이너를 직접 다룰 차례다. 이 글에서는 docker run hello-world 명령어가 내부적으로 어떤 일을 하는지 분석하고, docker ps, docker images, docker pull, docker rm, docker rmi 등 가장 많이 사용하는 Docker 기본 명령어를 실제 동작 원리와 함께 설명한다.
Docker 설치를 완료했다면 이제 실제 컨테이너를 실행해볼 차례다. 이 글에서는 Ubuntu 컨테이너를 직접 생성하고, 컨테이너 내부에 접속하고, 종료하고, 삭제하는 과정을 통해 Docker 컨테이너의 개념을 이해한다.
Docker의 핵심은 Container가 아니라 Image다. 이번 글에서는 Docker Image가 무엇인지, Repository와 Tag는 무엇인지, latest는 어떤 의미인지, Layer 구조는 왜 중요한지, 그리고 Image와 Container의 차이까지 실제 실습을 통해 이해해본다.
지금까지는 다른 사람이 만든 Docker 이미지를 사용했다. 이번 글에서는 Dockerfile을 작성하여 직접 Docker 이미지를 만들어본다. Dockerfile의 개념부터 FROM, RUN, COPY, WORKDIR, CMD 명령어까지 초보자도 이해할 수 있도록 설명한다.
Dockerfile을 작성할 수 있게 되었다면 이제 실제 파일을 Docker 이미지 안으로 복사해볼 차례다. 이번 글에서는 COPY, WORKDIR, CMD 명령어를 사용하여 내 컴퓨터의 파일을 Docker 이미지 내부로 복사하고 실행하는 과정을 실습한다.
실제 프로젝트는 하나의 컨테이너만 사용하는 경우가 거의 없다. Laravel, PostgreSQL, Redis처럼 여러 컨테이너를 함께 실행해야 한다. 이번 글에서는 Docker Compose가 왜 필요한지, docker-compose.yml 파일은 무엇인지, services와 ports 개념은 무엇인지 알아본다.
이번 글에서는 처음으로 docker-compose.yml 파일을 작성하고 Docker Compose를 사용해 컨테이너를 실행해본다. docker compose up, docker compose down 명령어와 services 개념을 실습을 통해 이해한다.