Docker 초보자도 30분 안에 이해하는 가이드
Docker를 처음 접하면 대부분 비슷한 의문을 갖는다. 프로그램 설치만 하면 되는 것 같은데 왜 Docker까지 써야 하는지 이해되지 않는다. 실제로 Docker를 사용하는 가장 큰 이유는 개발 환경을 통일하고 배포 과정을 단순하게 만들기 위해서다.
처음에는 명령어보다 흐름을 이해하는 것이 훨씬 중요하다. 이미지를 가져오고, 컨테이너를 만들고, 실행 환경을 연결하는 구조만 이해해도 Docker 학습 속도는 크게 빨라진다.
STEP 1. Docker는 프로그램을 담아 실행하는 표준 상자다
Docker는 프로그램과 실행 환경을 하나로 묶어 어느 컴퓨터에서도 같은 방식으로 실행하게 만드는 도구다.
예를 들어 Python 프로젝트를 실행한다고 가정해보자. Python 버전이나 라이브러리 버전 차이 때문에 같은 프로젝트가 어떤 컴퓨터에서는 정상 동작하고 다른 환경에서는 오류가 발생하는 경우가 있다.
Docker는 실행에 필요한 요소들을 함께 묶어서 동일한 환경을 만들어준다.
- 가상머신은 운영체제를 별도로 실행한다
- Docker는 애플리케이션 실행 환경에 집중한다
- Docker는 자원 사용량이 적고 시작 속도가 빠르다
처음에는 Docker를 가벼운 독립 실행 공간 정도로 이해해도 충분하다.
STEP 2. 이미지와 컨테이너 차이부터 이해해야 한다
이미지와 컨테이너는 Docker 입문자들이 가장 자주 헷갈리는 개념이다.
이미지는 실행 전 상태다.
컨테이너는 실행 중인 상태다.
건축으로 비유하면 이미지는 설계도이고 컨테이너는 실제 지어진 건물이다.
nginx 이미지를 내려받는 명령은 다음과 같다.
docker pull nginx
이 작업은 실행이 아니다.
실행에 필요한 파일을 가져오는 과정이다.
실제 실행은 컨테이너 생성 과정에서 이루어진다.
docker run nginx
하나의 이미지에서 여러 개의 컨테이너를 만들 수도 있다.
STEP 3. 처음 실행해볼 Docker 명령어 흐름
Docker를 처음 배울 때 가장 많이 사용하는 명령어 흐름은 생각보다 단순하다.
- 이미지 다운로드
docker pull nginx
- 컨테이너 실행
docker run -d -p 8080:80 nginx
- 실행 중인 컨테이너 확인
docker ps
- 컨테이너 중지
docker stop 컨테이너ID
- 컨테이너 삭제
docker rm 컨테이너ID
-p 8080:80 옵션은 컴퓨터의 8080 포트를 컨테이너 내부 80 포트와 연결한다는 의미다.
STEP 4. Docker가 실제로 동작하는 원리: 포트와 데이터 저장 이해하기
Docker를 실제로 사용하기 시작하면 대부분 비슷한 문제를 만나게 된다.
프로그램은 실행됐는데 접속이 되지 않거나 저장한 데이터가 사라지는 경우다.
포트는 외부와 연결하는 통로 역할을 한다.
컨테이너 내부는 기본적으로 외부와 분리되어 있기 때문에 필요한 포트를 열어줘야 한다.
데이터 저장은 볼륨이 담당한다.
컨테이너 내부 데이터는 컨테이너 삭제와 함께 사라질 수 있기 때문에 데이터베이스나 업로드 파일처럼 중요한 데이터는 별도 저장 공간을 연결하는 경우가 많다.
추가로 초보자가 자주 묻는 질문이 있다.
“Docker를 배우려면 Linux를 먼저 알아야 할까?”
기본 명령어 정도만 이해해도 시작할 수 있다. 처음부터 Linux를 깊게 공부할 필요는 없다.
Docker 핵심 흐름은 단순하다.
이미지를 가져온다. 컨테이너를 만든다. 포트를 연결한다. 필요한 데이터는 외부에 유지한다.
이 구조만 이해해도 Docker 학습 속도는 크게 달라진다.
