금융 인프라를 운영하는 Toss 개발자의 Docker
개발 · 프로그래밍 · 인프라
"로컬에서는 되는데 서버에서는 안 돼요"
여기서 끝내는 Docker 강의
이 강의는 Docker를 명령어 사용법이 아니라 실무에서 마주하는 문제를 푸는 관점으로 다루는 컨테이너 실습 강의입니다. Image·Container·Layer 개념에서 시작해 생명주기 관리, docker-volume, Network와 docker-compose, GitHub 기반 배포까지 직접 손으로 굴립니다.
- 개념 → 실무이미지에서 프로젝트 운영까지 한 흐름
- 이미지 하나에서 프로젝트 운영까지거의 모든 시간이 실습으로 이어집니다
- compose · volumeGHCR로 이미지 배포까지
금융 인프라를 운영하는 토스 현직 서버 개발자와 함께 구성한 커리큘럼
실습 환경은 macOS(Apple M3) · Docker version
28.0.0 하나면 됩니다
이 강의가 시작된 이유
쿠버네티스를 먼저 했더니, Docker가 남았습니다
아래는 실제 대화 내용입니다. 순서가 뒤바뀐 걸 알아챈 토스 개발자가 Docker를 다시 꺼냈어요.
그렇게 이 강의가 만들어졌습니다. "Docker가 기본"이라는 말이 시작이었어요.
지금 겪고 있는 일
백엔드 개발자는 애플리케이션 코드만 작성하면 끝일까요
근무 환경에 따라 인프라를 직접 구축하기도 하고, 코드만 작성하기도 합니다. 그런데 Docker 앞에서는 대부분 비슷한 곳에서 막힙니다.
- Docker를 쓰고는 있지만 Image와 Container 개념이 헷갈려 설정 실수를 반복한다
- "로컬에서는 되는데 서버에서는 안 되는" 환경 차이로 시간을 쓴다
- Dockerfile과 Compose를 제대로 이해하지 못해 프로젝트 구성이 늘 임시방편이다
- 컨테이너 로그 확인, 생명주기 관리, 리소스 정리가 어렵다
- 인프라 지식이 부족하다는 이유로 운영 업무가 부담스럽다
코드만 작성하는 자리에 오래 머무는 것이, 커리어에서 장기적으로 맞는 선택일까요?
Why Docker
Docker는 무엇을 해 주는 플랫폼인가요
Docker(도커)는 애플리케이션을 어디서든 동일하게 실행할 수 있게 만들어 주는 컨테이너 플랫폼입니다. 개발·테스트·운영 환경이 서로 달라 생기는 문제를 한 번에 정리하고, 실행 환경을 이미지로 고정해 두는 방식으로 관리합니다.
-
Consistency
Docker는 개발·스테이징·프로덕션 환경을 동일하게 유지해 "내 컴퓨터에서만 되는" 실행 차이를 없앱니다. -
Lightweight
Docker의 container는 VM보다 훨씬 가볍고 빠르게 뜨는 가상화 방식을 제공합니다. -
Fast Deploy
Docker는 이미지 기반 배포로 애플리케이션을 몇 초 만에 실행하고 확장할 수 있게 합니다. -
Isolation
Docker는 애플리케이션 간 의존성 충돌 없이 독립적인 실행 환경을 구성합니다. -
Portability
Docker는 로컬·온프레미스·클라우드 어디서든 동일한 방식으로 실행할 수 있게 합니다.
공식 문서는 Docker를 이렇게 설명합니다.
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly.
Docker는 애플리케이션을 개발하고 배포하고 실행하기 위한 오픈 플랫폼입니다. 애플리케이션과 인프라를 분리할 수 있게 해 주며, 이를 통해 소프트웨어를 빠르게 전달할 수 있습니다. 애플리케이션을 관리하는 방식과 동일한 방식으로 인프라도 관리할 수 있습니다.
현대적인 백엔드 시스템은 더 이상 단일 서버, 단일 애플리케이션 구조가 아닙니다. 이 강의는 Docker를 도구가 아니라 실제 운영을 책임지는 인프라 플랫폼으로 이해하고, 로컬 환경부터 Production 레벨까지 직접 구성해 보는 데 목적을 둡니다.
실제 강의 내용 맛보기
이런 장면을 다룹니다
설명보다 화면이 빠릅니다. 실제 강의 일부를 그대로 잘라 왔습니다.
데이터 영속성을 위한 Docker Named Volume컨테이너가 사라져도 데이터가 남게 만드는 방법
GHCR(GitHub Container Registry)를 활용한 Private Docker Registry만든 이미지를 GitHub에 올리고 받아 쓰는 흐름
Image Layer를 활용한 Cache 패턴과 Dangling Image빌드가 왜 빨라지고 느려지는지, 남은 이미지는 어떻게 치우는지
채용 시장의 현실
실제 공고는 무엇을 요구하나요
백엔드 채용 공고를 그대로 가져왔습니다. 요구 기술 목록에 Docker가 들어 있습니다.
이 강의의 특징
왜 이 Docker 강의인가요
금융 인프라를 운영하는 토스 개발자와 함께 만들었습니다
현직 개발자와 함께 구성된 강의는 흔치 않습니다. 토스에서 실제로 컨테이너를 운영하는 8년차 서버 개발자와 함께, 기본 개념부터 실무 구성까지 실제 기준으로 짰습니다.
거의 모든 시간이 실습으로 이어집니다
인프라는 이론으로 다루기 좋은 주제지만, 직접 명령어를 치고 컨테이너가 뜨는 걸 보는 것과는 차이가 큽니다. 개념 설명 뒤에 곧바로 실습이 붙습니다.
개념이 헷갈려서 생기는 실수를 없앱니다
Image와 Container, Layer의 관계가 잡히면 설정 실수가 크게 줄어듭니다. 이 강의는 그 관계를 먼저 세우고, 캐시 패턴과 Dangling Image 정리까지 이어서 다룹니다.
주니어에게는 차별점, 시니어에게는 기본기
"AWS로 인프라를 구성해 봤어요"에서 멈추면 설명할 수 있는 범위가 좁습니다. 현대적인 인프라에서 Docker는 빼고 말하기 어렵고, 이 내용을 아는 주니어와 모르는 시니어의 자리는 다릅니다.
이런 분께 추천해요
이 Docker 강의는 누구를 위한 강의인가요
- Docker를 쓰고는 있지만 Image·Container 개념이 헷갈려 매번 설정 실수를 반복하는 개발자
- "로컬에서는 되는데 서버에서는 안 되는" 환경 차이 문제로 스트레스를 겪고 있는 개발자
- Dockerfile과 Compose를 제대로 이해하지 못해 프로젝트 구성이 늘 임시방편인 개발자
- 컨테이너 로그 확인, 생명주기 관리, 리소스 정리에 어려움을 느끼는 주니어 개발자
- 인프라 지식이 부족하다는 이유로 실무 투입이나 운영 업무가 부담스러운 개발자
반대로 Image와 Container의 차이, Layer 캐시가 언제 깨지는지, Volume을 왜 붙이는지를 지금 바로 설명할 수 있다면 이 강의는 필요하지 않습니다.
커리큘럼
Docker 강의 커리큘럼
Docker를 처음 배우는 개발자를 위한 순서로 구성돼 있습니다. 탄생 배경과 기본 명령어에서 시작해 이미지·컨테이너 조작, 최적화 패턴, 네트워크와 Compose, 실무 프로젝트 관리로 이어집니다.
섹션 2. Docker 소개 및 환경설정
- Docker의 탄생 배경, 가상머신과의 차이, 아키텍처, macOS 동작 방식
- Docker 기본 명령어 실행
- Image, Container, Layer 기본 개념
섹션 3. Docker Image와 Container 기본 조작
- Image 활용 기본 명령어
- Docker Hub 이미지 선택 패턴
- Image Layer 캐시 패턴과 Dangling Image
- Container 생성과 실행
- Container 생명주기 관리와 로그 확인
- Container 상호작용 필수 명령어
섹션 4. Container 기능 및 최적화 패턴
- 컨테이너 기능과 최적화 패턴을 실습으로 다룹니다.
섹션 5. Network 및 Docker Compose
- 네트워크 구성과 docker-compose로 여러 컨테이너를 함께 다룹니다.
섹션 6. 실무 Project 관리
- 실무에서 프로젝트를 컨테이너로 관리하는 패턴으로 마무리합니다.
다루는 기술 · 실습 환경
무엇으로 실습하나요
- Docker
- container
- Image · Layer
- docker-compose
- docker-volume
- Network
- GHCR
- GitHub
- macOS (Apple M3)
Apple M3 Air 환경에서 진행하며 Docker version 28.0.0(build f9ced58158) 기준입니다. 별도 서버 없이 로컬에서 컨테이너를 띄워 그대로 따라올 수 있습니다.
커리큘럼까지 다 보셨다면
수강기한은 무제한입니다. 필요한 섹션만 다시 꺼내 볼 수도 있어요.
누가 만들었나요
이 강의를 함께 준비한 토스 개발자
토스 · 8년차 서버 개발자
Toss 개발자
8년차 백엔드 서버 개발자로 토스에서 금융 인프라를 운영하고 있습니다. 지방 대학에서 컴퓨터 공학을 전공했고 Java와 Spring을 메인 스택으로 쓰며 저수준 언어에도 관심이 많습니다. Hong과는 컨퍼런스에서 인연이 닿아 공동으로 강의를 촬영하고 있습니다.
- [現] 토스 서버 개발자
- [前] KT 서버 엔지니어
- [前] 넥슨 플랫폼 서버 개발자
자주 묻는 질문
Docker 강의 자주 묻는 질문
Docker(도커)는 무엇인가요?
Docker는 애플리케이션을 개발하고 배포하고 실행하기 위한 오픈 플랫폼입니다. 애플리케이션을 실행 환경째로 묶어 container로 만들어 두기 때문에, 어디서 실행하든 같은 결과를 얻을 수 있습니다. 애플리케이션과 인프라를 분리해 관리할 수 있게 해 주는 것이 핵심입니다.
Image와 Container는 무엇이 다른가요?
Image는 실행에 필요한 파일과 설정을 굳혀 둔 읽기 전용 묶음이고, Container는 그 Image를 실제로 띄워 돌아가고 있는 상태입니다. 하나의 Image로 여러 Container를 띄울 수 있어요. 섹션 2에서 Image·Container·Layer의 관계를 먼저 세우고, 섹션 3에서 각각을 직접 다룹니다.
Docker는 가상머신(VM)과 무엇이 다른가요?
VM은 운영체제를 통째로 띄우지만, Docker의 container는 호스트 커널을 공유해 훨씬 가볍고 빠르게 뜹니다. 그래서 같은 장비에서 더 많은 서비스를 돌릴 수 있고 배포도 몇 초 단위로 짧아집니다. 섹션 2에서 탄생 배경과 아키텍처, macOS에서의 동작 방식과 함께 다룹니다.
docker-volume은 왜 필요한가요?
Container를 지우면 그 안에 쌓인 데이터도 함께 사라집니다. docker-volume은 데이터를 컨테이너 바깥에 두어 컨테이너를 새로 띄워도 데이터가 남게 만듭니다. 미리보기 영상에 있는 Named Volume 실습에서 이 동작을 직접 확인할 수 있습니다.
docker-compose는 어떤 상황에서 쓰나요?
애플리케이션 하나만 띄우는 경우는 드뭅니다. 데이터베이스, 캐시, 애플리케이션을 함께 올려야 하는데 이걸 매번 명령어로 하나씩 띄우면 실수가 납니다. docker-compose는 이 구성을 파일로 선언해 한 번에 올리고 내립니다. 섹션 5에서 Network 구성과 함께 다룹니다.
Docker 입문자도 따라갈 수 있나요?
네. 난이도 입문 강의로, Docker의 탄생 배경과 기본 명령어에서 시작해 Image·Container·Layer 개념을 세우고 조작으로 넘어갑니다. 기본적인 백엔드 개발 경험이 있으면 충분하고, 뒤쪽의 최적화 패턴과 실무 프로젝트 관리는 이미 Docker를 쓰고 있는 분에게도 새로운 내용입니다.
실습 환경은 어떻게 구성하나요?
Apple M3 Air 환경에서 Docker version 28.0.0(build f9ced58158) 기준으로 진행합니다. 별도의 유료 클라우드 결제 없이 로컬에서 컨테이너를 띄워 전부 실습할 수 있고, 섹션 2에서 환경설정부터 함께 짚습니다.
GitHub로 이미지를 배포하는 방법도 다루나요?
네. GHCR(GitHub Container Registry)을 활용해 Private Docker Registry를 구성하는 내용을 다룹니다. 직접 만든 이미지를 올리고 받아 쓰는 흐름을 실습으로 확인할 수 있습니다.
Kubernetes를 배우기 전에 Docker를 먼저 들어야 하나요?
순서를 정한다면 Docker가 먼저입니다. Kubernetes는 컨테이너를 여러 대에 걸쳐 운영하는 플랫폼이라, 컨테이너와 이미지가 무엇인지 먼저 손에 익어 있어야 합니다. 이 강의는 그 기본을 세우는 자리입니다.
Docker 강의 커리큘럼은 어떤 순서인가요?
Docker 소개와 환경설정에서 시작해 Image와 Container 기본 조작, Container 기능 및 최적화 패턴, Network와 docker-compose, 실무 Project 관리 순으로 이어집니다. 수강기한은 무제한입니다.
"제 컴퓨터에서는 되는데요"를 마지막으로 말하는 날
이미지 하나 받는 것에서 시작해 볼륨·네트워크·Compose·배포까지 전부 실습으로 확인합니다.
함께 성장해요
개발자 오픈 채팅방
커리어와 현업 상황, 기술을 나누는 개발자 오픈 채팅방을 운영하고 있어요. 강의를 들으며 궁금한 점이나 실무 고민을 편하게 나눠 보세요.