지금부터 도커의 개념에 대해서 알아보도록 하겠다.
필자는 배워가는 단계이기에 입문 용도로 보는 것을 추천한다..
도커(Docker)의 정의
도커는 애플리케이션을 컨테이너로 패키징해 실행할 수 있게 해주는 가상화 플랫폼을 의미한다.
기존에는 독립된 환경을 구축하기 위해 VM(가상머신)을 사용했다.
[참고] 2025.08.27 - [Development/개발 공부] - 가상 머신(VM, Virtual Machine)

하지만 VM마다 OS가 포함되기 때문에 많은 리소스와 비용이 소모된다.
이러한 단점을 방지하기 위해, OS를 공유하면서도 각 애플리케이션의 실행 환경을 독립적으로 구성할 수 있는 도커가 등장하였다.
이미지(Image)와 컨테이너(Container)
도커의 이미지와 컨테이너에 대해 알아보도록 하자.
이미지(Image)
도커의 이미지란 애플리케이션 실행에 필요한 요소들(코드, 라이브러리, 설정 등)을 가지고 있는 패키지를 의미한다.
이러한 패키지는 GitHub처럼 업그레이드가 가능하여, 변경된 부분만 반영된다는 장점이 있다.
컨테이너(Container)
도커의 컨테이너를 이미지를 실행시킨 상태를 의미한다.
두 컨테이너가 같은 이미지를 실행할 수도 있다.
도커의 이미지와 컨테이너는 마치 프로그램과 프로세스의 관계와 같다!
도커 데스크탑(Docker Desktop)
도커 데스크탑(Docker Desktop)은 윈도우나 맥에서 도커를 실행하기 위한 애플리케이션이다.
도커는 리눅스 커널 기능을 활용해 동작하므로, 기본적으로 "리눅스 환경"이 필요하다.
하지만 대부분 사람들은 윈도우나 맥 OS를 사용하기 때문에, 리눅스 환경을 쓰려면 결국 리눅스 VM이 필요하다.
도커 데스크탑은 백그라운드에서 경량 리눅스를 실행해주므로,
로컬에서 도커를 사용하려면 이 애플리케이션을 설치해 실행시켜주어야 한다.
(물론 wsl을 사용해 도커를 실행시킬 수는 있지만.. 권한 등의 설정이 별도로 존재하기 때문에
Docker Desktop을 이용하는 경우가 많은 것으로 알고있다..)
도커 허브(Docker Hub)
위에서 도커의 이미지와 컨테이너의 개념에 대해 알아보았다.
도커의 이미지는 누가 만드는 것인가???? 당연히 나(=me)이다.
내가 필요한 설정과 코드를 여기저기 자유롭게 실행시킬 수 있다는 장점으로 도커를 사용하기 때문이다.
하지만 이렇게 만든 이미지를 다른 환경에서도 동일하게 실행하려면 어떻게 해야 할까?
내가 만든 이미지를 다른 서버에서 사용하려면, 해당 이미지를 가져올 수 있어야 한다.
이때 필요한 것이 바로 도커 허브(Docker Hub)이다.
도커 허브(Docker Hub)란 도커 이미지를 저장하고 공유하는 원격 저장소(Registry)를 의미한다.
내가 만든 이미지를 도커에 업로드(push)하고 → 다른 환경에서는 해당 이미지를 다운로드(pull)하여 동일한 컨테이너를 실행할 수 있다.
도커 파일(Dockerfile)
도커 파일(Dockerfile)은 도커 이미지를 생성하기 위한 과정을 정의한 파일이다.
즉, 애플리케이션 실행에 필요한 환경과 코드를 이미지 내부에 포함시키는 과정을 정의한다.
도커 파일의 예시를 살펴보자.
echo 'FROM nginx' > Dockerfile
echo 'COPY index.html /usr/share/nginx/html/index.html' >> Dockerfile
nginx 서버를 기반(base)으로 동작하는 애플리케이션을 이미지로 패키징한 예시이다.
index.html이 포함된 프로젝트 경로에서 다음과 같은 내용으로 Dockerfile을 작성한 뒤,
이를 기반으로 이미지를 생성하고 컨테이너로 실행하면, 다른 환경에서도 동일한 애플리케이션을 구동할 수 있다.
도커 빌드 및 실행
생성한 Dockerfile을 기반으로 이미지를 만드는 과정을 도커 빌드(Build)라고 한다.
Dockerfile이 위치한 프로젝트 경로에서 다음과 같은 명령어를 통해 이미지를 생성할 수 있다.
docker build -t my-web .
.(현재 경로)에서 my-web이라는 태그로 이미지를 생성하게 된다!
생성된 이미지를 바탕으로 컨테이너를 실행시키는 것을 도커 실행(run)이라고 한다.
docker run -d -p 8080:80 my-web
해당 명령어는 도커를 실행시키는 명령어이다.
- -d: 백그라운드에서 실행시키기 위한 옵션
- -p 8080:80: 포워딩 정보
- my-web: 실행할 이미지 이름
-p 8080:80은 호스트의 8080 포트와 컨테이너의 80 포트를 연결하는 포트 포워딩을 의미한다.
즉, 로컬의 8080 포트로 들어온 요청이 컨테이너 내부의 80 포트로 전달된다.
80 포트를 사용하는 이유는, base 이미지인 nginx가 기본적으로 80번 포트에서 동작되기 때문이다.
실행 컨테이너 목록 조회
이미지를 빌드하고 컨테이너를 실행하면,
docker ps 명령어를 통해 현재 실행 중인 컨테이너 정보를 확인할 수 있다.
해당 명령어를 실행하면 컨테이너 ID, 이미지 이름, 실행 상태, 포트 정보 등을 확인할 수 있다.
만약, docker ps -a 옵션을 사용하면 종료된 컨테이너 정보도 확인할 수 있다.
지금까지 도커의 기본 개념과 사용 방법에 대해 알아보았다.
다음에는 실습을 통해 도커에 대해 더 자세히 알아보자!!
👏