Docker 기본 개념과 사용법

Docker란 무엇이며, 왜 사용하는가?
Docker도커컨테이너DevOps데브옵스
avatar
2025.03.24
·
6 min read

새로 입사한 회사에서 진행중인 대부분의 웹 프로젝트가 Docker를 사용하여 컨테이너화 되어 있었고 이에 따라 Docker를 익히게 되면서 공부한 내용에 대해 정리를 하고자 합니다."

Docker란 무엇인가?

Docker는 컨테이너 기술을 활용하여 애플리케이션을 가볍고 일관된 환경에서 실행할 수 있도록 도와주는 개발 도구입니다. 기본적으로, Docker를 사용하면 애플리케이션과 그 의존성을 컨테이너에 패키징하고 어디서든 동일한 환경에서 실행할 수 있습니다.

쉽게 말해서 Next.js로 개발된 웹 애플리케이션을 개발 할 때 함께 개발하는 팀원의 개발환경에 설치된 Node.js 버전이 다를 수도 있고, 설치된 패키지의 버전 정보가 달라서 문제가 발생할 수도 있는것을 Docker를 사용하면 통일할 수 있다는 장점이 있습니다.

단순히 패키지 정보의 경우 package.json에 기록이 되지 않느냐고 할 수 있지만, Docker를 사용할 경우 조금 더 광범위하게 개발 환경을 서로 통일할 수 있으며, 추후에 AWS 등의 클라우드에 배포를 할 때에도 간편하게 배포 및 확장이 가능하다는 장점이 있습니다.

4271

Docker 기본 개념

이미지(Image): 컨테이너를 생성하기 위한 템플릿입니다. 예를 들어, node 이미지는 Node.js 실행 환경을 포함하고 있습니다.

컨테이너(Container): 이미지를 기반으로 실행되는 독립적인 환경입니다. 컨테이너는 애플리케이션과 그 의존성을 포함하여 어디서든 동일한 환경에서 실행할 수 있도록 합니다.

Dockerfile: 이미지를 생성하기 위한 설정 파일입니다. 이 파일에 필요한 명령어를 작성하면, 원하는 환경을 가진 이미지를 만들 수 있습니다.

레지스트리(Registry): Docker 이미지를 저장하고 공유하는 공간입니다. 대표적으로 Docker Hub가 있으며, 여기에 이미지를 업로드하거나 다운로드할 수 있습니다.

Docker 설치

운영체제에 따라 Docker를 설치합니다.

Windows / Mac: Docker Desktop 다운로드 후 설치합니다.

Linux: 패키지 매니저를 사용하여 설치할 수 있습니다. (예: Ubuntu의 경우 sudo apt install docker.io)

설치가 완료되면, 터미널에서 docker version을 실행하여 정상적으로 설치되었는지 확인합니다.

Docker 기본 명령어

① 이미지 다운로드

docker pull <이미지이름>

• 예: docker pull node (Node.js 공식 이미지를 다운로드합니다.)

② 컨테이너 실행

docker run -d -p <호스트포트>:<컨테이너포트> --name <컨테이너이름> <이미지이름>

• 예: docker run -d -p 3000:3000 --name myapp node (Node.js 컨테이너 실행)

③ 실행 중인 컨테이너 확인

docker ps

• 실행 중인 컨테이너 목록을 확인할 수 있습니다.

④ 컨테이너 중지

docker stop <컨테이너이름 또는 ID>

• 예: docker stop myapp

⑤ 컨테이너 삭제

docker rm <컨테이너이름 또는 ID>

• 예: docker rm myapp

⑥ 이미지 삭제

docker rmi <이미지이름 또는 ID>

• 예: docker rmi node

Dockerfile 작성 및 빌드

① Dockerfile 생성

Dockerfile을 만들고 아래 내용을 추가합니다.

# Node.js 18 버전 기반 이미지 사용
FROM node:18

# 작업 디렉토리 설정
WORKDIR /app

# 패키지 파일 복사 후 의존성 설치
COPY package.json ./
RUN npm install

# 프로젝트 파일 복사
COPY . .

# 컨테이너에서 실행할 명령어
CMD ["npm", "start"]

# 컨테이너에서 사용할 포트
EXPOSE 3000

② Docker 이미지 빌드

docker build -t myapp .

• 현재 디렉토리(.)의 Dockerfile을 기반으로 myapp이라는 이미지를 생성합니다.

③ Docker 컨테이너 실행

docker run -d -p 3000:3000 --name myapp-container myapp

• myapp 이미지를 기반으로 myapp-container 컨테이너를 실행합니다.







- 컬렉션 아티클