개발 기본

도커(Docker)

Docker는 이미지에 정의한 앱과 실행 환경으로 컨테이너를 만들고 실행하는 도구입니다.

쉬운 설명

스터디 프로젝트 안내에 “Docker로 실행하세요”라고 적혀 있을 수 있어요. 이미지는 앱 실행에 필요한 파일과 설정을 담은 것이고, 컨테이너는 그 이미지를 바탕으로 실행하는 환경이에요. 같은 이미지를 사용하면 도구와 라이브러리 차이로 생기는 문제를 줄일 수 있어요. 포트·환경변수·데이터 저장 위치 같은 실행 설정은 따로 맞춰야 해요.

이런 상황에서 만나요

앱 컨테이너는 실행 중이라고 나오는데 브라우저에서는 열리지 않는다고 해 볼게요. 컨테이너 안에서 앱이 듣는 포트와 내 컴퓨터에서 접속할 포트를 구분해야 해요.

브라우저에서 쓸 포트와 앱의 포트를 맞춰 봐요

설명용 화면
1실행 예시
docker run -p 127.0.0.1:8080:3000 study-app:example
2포트 연결

내 컴퓨터 8080 → 컨테이너 3000

3내 컴퓨터에서 열 주소
http://localhost:8080
  1. 1study-app:example이라는 이미지가 준비돼 있다고 가정한 명령이에요.
  2. 2앱이 컨테이너 안의 3000번 포트에서 접속을 받는 예시예요.
  3. 3브라우저에서는 호스트 쪽 포트를 사용해요.
포트 연결을 설명하는 예시입니다. 이미지 이름은 가상이며 실제로 제공되는 이미지가 아닙니다. 앱은 컨테이너 네트워크에서 접속 가능한 주소에 바인딩돼 있다고 가정합니다.

아래 설정은 내 컴퓨터의 8080번 포트를 컨테이너의 3000번 포트에 연결하는 예시예요. 실제 앱도 컨테이너 안의 올바른 주소와 포트에서 접속을 받고 있어야 해요. 컨테이너 상태만 보지 말고 로그와 브라우저 응답도 확인해요.

헷갈리기 쉬운 점

컨테이너를 삭제해도 데이터는 남나요?

컨테이너 자체의 쓰기 가능한 파일 영역에만 저장했다면 컨테이너 삭제와 함께 사라질 수 있어요. 계속 보관해야 할 DB나 업로드 파일은 볼륨 등 별도 저장 방식을 정하고 백업도 확인해요.

API 비밀 키를 Dockerfile이나 이미지 안에 넣지 않아요. 실행 시 필요한 설정으로 전달하고, 공개할 포트와 연결 범위도 확인해요. 같은 이미지라도 운영체제·CPU 구조나 외부 서비스 조건에 따라 실행 차이가 생길 수 있어요.

왜 알아야 할까요?

이미지를 받는 단계, 컨테이너를 실행하는 단계, 앱에 접속하는 단계를 나눠 볼 수 있어요. “실행 중인데 안 열려요”라는 문제도 포트와 앱 로그부터 설명할 수 있어요.

조금 더 자세히

Dockerfile은 이미지를 만드는 방법을 적는 파일이고 이미지는 컨테이너 생성에 사용하는 읽기 전용 기반입니다. 같은 이미지에서 여러 컨테이너를 만들 수 있으며 컨테이너마다 실행 설정과 상태는 다를 수 있습니다.

포트 게시 설정은 호스트의 포트와 컨테이너의 포트를 연결합니다. 예시의 127.0.0.1 바인딩은 내 컴퓨터에서 접속하도록 범위를 제한합니다. 볼륨은 컨테이너의 수명과 데이터를 분리하는 방법이지만 삭제·백업 정책은 따로 관리합니다.

직접 사용할 때 확인해 보세요

  • 이미지와 실행 중인 컨테이너를 구분한다
  • 호스트 포트와 컨테이너 포트를 대조한다
  • 지속 저장할 데이터와 비밀값의 전달 방식을 확인한다

관계 지도

도커(Docker) 중심으로 관련 개념의 정의와 관계를 한눈에 정리했습니다.
도커(Docker)의 정의와 관련 개념 간 관계를 설명한 계층형 그래프