쉬운 설명
Docker는 '컨테이너'라는 개념을 일반 개발자가 쉽게 쓸 수 있게 만든 도구입니다. 2013년 등장한 뒤 사실상 백엔드·인프라의 표준 도구가 됐습니다. Dockerfile이라는 파일에 '이 앱은 Node 18 기반이고, 이 라이브러리들이 필요하고, 이렇게 시작하라'고 적어 두면, 그 파일로부터 같은 이미지가 어디서나 만들어집니다. 이 이미지를 띄우면 컨테이너가 됩니다.
핵심 단어 셋: ① Dockerfile(이미지 만드는 레시피), ② Image(불변 스냅샷, 어느 환경에서나 같음), ③ Container(이미지를 띄운 실행체, 여러 개를 동시에 띄울 수 있음). 이미지는 Docker Hub·Amazon ECR·Google Container Registry 같은 레지스트리에 올려서 팀원·서버끼리 공유합니다.
실무에서 가장 큰 효용은 일관성입니다. 노트북에서·CI에서·스테이징에서·운영에서 같은 이미지를 띄우니, '여기는 되는데 저기는 안 된다'가 사라집니다. 또 한 서버에 여러 컨테이너를 띄울 수 있어 자원 활용이 좋고, 배포가 빠르고, 롤백도 즉시 가능합니다(이전 이미지로 다시 띄우기).
도구 생태계도 넓습니다. docker-compose는 여러 컨테이너(앱+DB+캐시)를 한 파일로 묶어 한 번에 띄우는 도구. 운영 단계에서는 쿠버네티스가 수백 개 컨테이너의 자동 운영을 담당. 클라우드 사업자들도 컨테이너 기반 매니지드 서비스(AWS Fargate·Cloud Run·Container Apps)를 빠르게 늘리고 있습니다.
주의: 이미지가 너무 크면 배포가 느려지고 비용이 듭니다. 멀티 스테이지 빌드·작은 베이스 이미지(Alpine·distroless)·캐시 활용 같은 최적화가 필요합니다. 또 베이스 이미지의 보안 패치를 챙겨야 하고, 이미지 안에 비밀번호·API 키를 넣으면 안 됩니다(환경 변수·시크릿 매니저 사용). Docker는 강력하지만 잘 쓰는 데 시간이 듭니다.

비유로 보면
Docker는 음식의 레토르트 포장 기술과 비슷합니다. 한 번 잘 만든 음식(코드)을 진공 포장해 두면 누가 어디서 꺼내 데우든 같은 맛이 납니다. 보관·운반·재현이 표준화되어, 셰프(개발자)는 매번 같은 음식을 만드는 일에 시간을 덜 쓸 수 있게 됩니다.
어디에서 만나나
거의 모든 현대 백엔드 프로젝트의 첫 단계, 머신러닝 학습 환경의 표준화, CI/CD 빌드 격리, 데이터 분석 노트북 환경, 오픈소스 도구의 배포(많은 도구가 'docker run ...' 한 줄로 시작). 쿠버네티스 같은 운영 시스템도 결국 Docker 이미지를 띄웁니다.
작은 예시
오픈소스 프로젝트의 README에 'docker run -p 8080:8080 mycompany/app'이라고만 적혀 있어도, 누구나 자기 컴퓨터에서 그 앱을 1분 안에 띄워 볼 수 있습니다. 설치할 라이브러리·맞춰야 할 OS 버전 — 그 모든 게 이미지 안에 이미 들어 있기 때문입니다.
자주 하는 오해
한 줄 정리
Docker의 진짜 가치는 '한 번 만든 이미지가 어디서나 똑같이 돈다'에 있습니다. 이 단순한 약속이 개발·운영의 수많은 문제를 한꺼번에 해결했습니다.
