취업 자료실도커 기초 개념 — 이미지·컨테이너·포트·볼륨과 첫 컨테이너 실행 흐름

도커 기초 개념 — 이미지·컨테이너·포트·볼륨과 첫 컨테이너 실행 흐름

2026년 10월 28일 5분 읽기 조회 0
도커 기초 개념 — 이미지·컨테이너·포트·볼륨과 첫 컨테이너 실행 흐름

도커의 이미지·컨테이너·포트·볼륨 네 가지 개념을 Docker 공식 문서 정의로 정리하고, nginx 웹 서버 컨테이너를 실행·접속·정지·삭제하는 흐름 속에서 각 개념이 어디에 쓰이는지 보여 줍니다.

도커 명령어를 따라 쳐서 화면은 띄웠는데 「이미지와 컨테이너가 뭐가 다른지」, 「포트 8080:80은 무슨 뜻인지」 설명하려면 막힌다면 이 글이 도움이 됩니다. 도커 기초 개념 네 가지(이미지·컨테이너·포트·볼륨)를 Docker 공식 문서의 정의로 정리하고, 웹 서버 컨테이너 하나를 띄웠다가 지우기까지의 흐름을 단계별로 따라가며 각 개념이 어디서 쓰이는지 보여 줍니다. 개발 입문자, 인프라 업무를 처음 맡은 직장인, 개발자와 대화해야 하는 기획자를 위한 글입니다.

핵심 요약 (2026년 10월 기준, Docker 공식 문서)

  • 이미지는 컨테이너 실행에 필요한 파일·라이브러리·설정을 담은 표준 패키지이며, 한 번 만들면 바뀌지 않고 여러 층(레이어)으로 쌓입니다.
  • 컨테이너는 이미지로 실행한, 서로 격리된 프로세스입니다.
  • 포트 공개는 「호스트 포트:컨테이너 포트」 형식이며, 기본으로 모든 네트워크 인터페이스에 공개됩니다.
  • 볼륨은 도커가 관리하는 저장 공간으로, 컨테이너를 지워도 데이터가 남습니다.

🚀 도커는 어떤 문제를 해결하는 도구인가요?

도커는 프로그램과 그 프로그램이 돌아가는 데 필요한 환경을 한 묶음으로 만들어, 어느 컴퓨터에서든 같은 방식으로 실행하게 해 주는 도구입니다. 「제 PC에서는 되는데 서버에서는 안 돼요」라는 문제는 대개 운영체제 설정, 라이브러리 버전, 환경 변수가 서로 달라서 생기는데, 도커는 이 차이를 묶음 안에 가둬 버립니다.

가상 머신과 자주 비교되지만 구조가 다릅니다. 가상 머신은 운영체제를 통째로 하나 더 띄우는 반면, 컨테이너는 호스트의 커널을 함께 쓰면서 리눅스의 격리 기능으로 「보이는 범위」와 「쓸 수 있는 자원」만 나눕니다. 그래서 몇 초 안에 켜지고 자원도 적게 씁니다. 격리 원리는 무료 읽는 강의 컨테이너와 도커의 구조에서 실제 명령으로 확인할 수 있습니다.

⚖️ 이미지와 컨테이너는 무엇이 다른가요?

이미지는 실행 전의 틀이고, 컨테이너는 그 틀로 실행한 실체입니다. Docker 공식 문서는 컨테이너 이미지를 「컨테이너를 실행하는 데 필요한 모든 파일, 바이너리, 라이브러리, 설정을 담은 표준화된 패키지」로 정의하고, 컨테이너는 「앱의 구성 요소마다 격리된 프로세스」라고 설명합니다. 같은 문서는 이미지의 두 원칙으로 한 번 만들면 수정할 수 없다는 점(불변성)과, 파일 변경 사항을 담은 층(레이어)이 쌓여 만들어진다는 점을 듭니다.

구분이미지컨테이너
비유붕어빵 틀, 설치 파일틀로 구운 붕어빵, 실행 중인 프로그램
상태읽기 전용, 바뀌지 않음실행·정지·삭제 상태가 있음
개수하나같은 이미지로 여러 개 실행 가능
수정하려면새 이미지를 다시 만듦컨테이너 안 변경은 지우면 함께 사라짐

이미지는 레지스트리라는 저장소에서 받아 옵니다. Docker 공식 문서에 따르면 레지스트리는 컨테이너 이미지를 저장·관리하는 중앙 저장소이고, 그 안에서 관련 이미지를 묶은 단위를 저장소(repository)라고 하며, 별도로 지정하지 않으면 공개 레지스트리인 Docker Hub를 기본으로 씁니다. 이미지 이름 뒤 콜론 다음의 태그(예: 1.29, latest)는 버전 표시입니다.

서버실에 늘어선 서버 장비

📊 포트 8080:80은 무슨 뜻인가요?

내 컴퓨터(호스트)의 8080번 포트로 들어온 요청을 컨테이너 안의 80번 포트로 넘겨 준다는 뜻입니다. Docker 공식 문서는 이 형식을 「호스트 포트:컨테이너 포트」로 설명합니다. 앞이 내가 접속할 문, 뒤가 컨테이너 안에서 프로그램이 기다리는 문입니다. 컨테이너는 격리돼 있어서 이렇게 포트를 공개하지 않으면 바깥에서 접속할 수 없습니다.

공식 문서는 주의할 점도 함께 적고 있습니다. 포트를 공개하면 기본으로 모든 네트워크 인터페이스에 열리므로 데이터베이스나 민감한 정보를 다루는 컨테이너는 신중하게 공개하라는 것입니다. 내 컴퓨터에서만 접속하게 하려면 「127.0.0.1:8080:80」처럼 주소를 앞에 붙여 묶을 수 있습니다. 실행 중인 컨테이너의 포트 연결 상태는 「docker ps」의 PORTS 칸에서 확인합니다. 포트·IP의 기본 개념이 낯설다면 네트워크 기초 — IP·포트·DNS·HTTPS를 먼저 읽으면 이해가 쉽습니다.

💾 컨테이너를 지우면 데이터도 사라지나요?

컨테이너 안에만 저장한 데이터는 컨테이너와 함께 사라지고, 볼륨에 저장한 데이터는 남습니다. Docker 공식 문서는 볼륨을 「도커가 만들고 관리하는 컨테이너용 영구 저장소」로 정의하고, 볼륨은 컨테이너의 생명주기 밖에 있어서 사용하던 컨테이너를 삭제해도 데이터가 유지된다고 설명합니다. 컨테이너 자체의 쓰기 공간은 컨테이너를 지울 때 함께 지워집니다.

  1. 「docker volume create my-vol」로 이름 붙은 볼륨을 만듭니다.
  2. 컨테이너를 실행할 때 「-v my-vol:/data」를 붙이면 컨테이너 안의 /data 폴더가 볼륨에 연결됩니다.
  3. 이 컨테이너를 지우고 같은 볼륨을 연결해 새 컨테이너를 띄우면 /data의 파일이 그대로 있습니다.

데이터베이스 컨테이너를 볼륨 없이 운영하다 컨테이너를 새로 만들면서 데이터를 잃는 것이 입문자의 대표적인 사고입니다. 쓰지 않는 볼륨은 지우기 전까지 계속 남아 디스크를 차지한다는 점도 함께 기억해 둡니다. 볼륨과 내 컴퓨터 폴더를 직접 연결하는 바인드 마운트의 차이는 볼륨과 바인드 마운트에서 다룹니다.

개발자의 화면에 명령어와 코드가 표시된 모습

🔄 첫 컨테이너는 어떤 흐름으로 실행하고 정리하나요?

이미지 받기 → 컨테이너 실행 → 접속 확인 → 정지 → 삭제의 다섯 단계를 한 번 돌려 보면 네 개념이 한 번에 연결됩니다. 아래는 Docker 공식 문서의 포트 공개 예제(nginx 웹 서버)를 기준으로 한 흐름입니다. 도커가 설치되어 있다는 전제이며, 설치 상태는 「docker version」으로 확인할 수 있습니다.

단계명령일어나는 일
1. 실행docker run -d -p 8080:80 nginx이미지가 없으면 Docker Hub에서 받고, 컨테이너를 만들어 백그라운드(-d)로 시작
2. 확인docker ps실행 중인 컨테이너와 포트 연결 확인
3. 접속브라우저에서 http://localhost:8080nginx 기본 환영 페이지가 열림
4. 정지docker stop 컨테이너이름컨테이너가 멈추지만 삭제되지는 않음(docker ps -a에 남음)
5. 삭제docker rm 컨테이너이름컨테이너 삭제, 이미지는 그대로 남음

컨테이너 이름은 「docker ps」 맨 오른쪽 NAMES 칸에서 확인하거나, 실행할 때 「--name web」처럼 직접 붙여 두면 편합니다. 실행 중인 컨테이너는 바로 「docker rm」으로 지울 수 없고 먼저 멈춰야 한다는 점, 멈춘 컨테이너도 이름을 계속 차지해서 같은 이름으로 새로 만들면 충돌한다는 점이 처음에 자주 막히는 부분입니다. 같은 8080 포트를 쓰는 컨테이너를 두 개 띄우려 할 때도 충돌이 나므로 앞의 숫자만 바꿔 씁니다. 옵션별 실제 출력은 이미지와 컨테이너 기본 명령에서 확인할 수 있습니다.

📚 도커 기초 다음에는 무엇을 배우면 되나요?

내 프로그램을 이미지로 만드는 Dockerfile, 여러 컨테이너를 함께 띄우는 Docker Compose 순서로 넘어가면 됩니다. 남이 만든 이미지를 실행하는 단계에서 내 이미지를 만드는 단계로, 컨테이너 하나에서 웹 서버와 데이터베이스를 묶은 서비스로 넓혀 가는 흐름입니다. 그다음이 여러 서버에서 컨테이너를 관리하는 쿠버네티스입니다.

이미지·컨테이너 명령, 네트워크와 볼륨, Dockerfile, Docker Compose까지 실습으로 이어 가려면 누구나 쉽게 배우는 도커 기초 및 활용법 과정이 이 글의 개념을 화면 실습으로 다룹니다.

❓ 자주 묻는 질문

도커 이미지를 지우면 실행 중인 컨테이너도 사라지나요?

컨테이너가 사용 중인 이미지는 바로 지워지지 않습니다. 보통은 컨테이너를 먼저 멈추고 지운 뒤 이미지를 지우는 순서로 정리합니다.

localhost:8080에 접속이 안 되면 무엇부터 확인하나요?

「docker ps」로 컨테이너가 실행 중인지, PORTS 칸에 8080에서 80으로 연결이 표시되는지 먼저 봅니다. 컨테이너가 바로 종료됐다면 「docker logs 컨테이너이름」으로 오류 메시지를 확인하고, 8080을 다른 프로그램이 쓰고 있다면 앞 숫자를 다른 번호로 바꿔 다시 실행합니다.

볼륨과 바인드 마운트 중 무엇을 써야 하나요?

데이터베이스 파일처럼 도커가 관리해 주면 되는 데이터는 볼륨이, 내가 편집하는 소스 코드를 컨테이너에서 바로 보이게 하려면 내 컴퓨터 폴더를 연결하는 바인드 마운트가 편합니다. 운영 환경의 영구 데이터에는 볼륨이 일반적인 선택입니다.

이 글은 2026년 10월 28일 기준 Docker 공식 문서(docs.docker.com)와 누구나패스 읽는 강의의 실제 실행 결과를 확인해 작성했습니다.

다음 단계

읽은 내용을 과정으로 이어서 준비해 보세요

댓글

0/1000

불러오는 중...

관련 글