Docker
Docker (2013)
1. 요약
Docker는 2013년 3월 Solomon Hykes가 PyCon 산타클라라에서 공개한 컨테이너 플랫폼이다. dotCloud(YC 2010 PaaS 스타트업)의 내부 도구에서 시작, 2013년 오픈소스 공개 후 cgroups + namespaces + Copy-on-Write라는 기존 Linux 커널 기능을 개발자가 쓸 만한 형태로 묶어 컨테이너 시대를 열었다. 회사 명칭도 *dotCloud → Docker Inc.*로 변경.
2. 등장 배경
dotCloud는 2010~2013년 PaaS(Platform as a Service) 회사였다. 핵심 문제: "개발자가 자기 환경에서 만든 코드를 어떻게 서버 환경에서 똑같이 돌릴 것인가?" 즉 환경 일관성. dotCloud 내부에서 컨테이너 기술을 사용했지만 시장에 어떻게 가져갈지 막연했다. 2013년 Hykes가 내부 컨테이너 도구를 오픈소스로 공개하기로 결정. PyCon 발표 후 폭발적 반응. 그해 GitHub 트렌딩 1위 프로젝트가 됨.
3. 아키텍처 특징 (기존 Linux 추상의 결합)
- cgroups — 2006년 Google 엔지니어 Rohit Seth가 Linux 커널에 박은 프로세스 그룹별 자원 제어. CPU·메모리·I/O 할당을 격리.
- namespaces — 프로세스가 자신의 PID·네트워크·마운트·UID·IPC를 다른 프로세스와 분리해서 보게 하는 명칭 공간. 컨테이너 = 프로세스에 namespaces + cgroups + chroot를 박은 것.
- UnionFS / Copy-on-Write — 이미지 레이어를 쌓아 효율적으로 저장. 같은 베이스 이미지를 공유하면 디스크 한 번만 차지.
- Docker Image — 레이어 + 메타데이터의 불변 패키지. Dockerfile로 선언적 정의. git push처럼 push/pull.
- libcontainer (2014) — 초기 LXC를 대체한 Docker 자체 컨테이너 런타임. Go로 작성. 후일 runc로 분리 → OCI(Open Container Initiative) 표준이 됨.
- Docker Hub — 공용 이미지 레지스트리. npm·PyPI의 컨테이너 버전.
4. 짝지어진 언어
Go(Docker 자체가 Go로 작성). Go의 바이너리 단일 파일·정적 링크·동시성이 시스템 도구 작성에 최적. Docker가 Go의 인기를 폭발적으로 끌어올림. Python·Node.js·Ruby·Java·기타 모든 언어가 컨테이너로 패키징되어 배포되는 방식이 표준이 됨. 언어와 무관하게 컨테이너 인터페이스가 통일된 배포 추상.
5. SE 실무 변화
- 개발 ↔ 운영 일치(Dev = Ops) — 내 노트북에서 돌아가면 운영 서버에서도 똑같이 돌아간다. CI/CD의 산업 표준 모델 정착.
- 마이크로서비스의 기본 단위 — 한 컨테이너 = 한 서비스. 모놀리식 → 마이크로서비스 전환의 토대.
- 클라우드 네이티브 패러다임 — 12-Factor App, Cattle vs Pets 비유, 불변 인프라(Immutable Infrastructure) 등 2010년대 후반 DevOps의 어휘가 모두 컨테이너 위에서 자라남.
- OCI 표준화 — 2015년 OCI(Open Container Initiative) 결성, 이미지 포맷·런타임 인터페이스 표준화. 특정 회사 의존을 막음.
6. 강의 활용
Docker는 강의에서 **"새 기술이 아니라 기존 추상의 새 인터페이스가 시대를 바꾼다"**의 결정적 사례. cgroups·namespaces·UnionFS는 이미 있었는데, Docker는 그 위에 개발자가 쓸 만한 명령어 인터페이스(docker run)와 이미지 포맷을 얹은 것뿐이다. "좋은 추상의 좋은 인터페이스가 시대를 바꾼다". Vibe Coding 시대에 LLMWiki + 프롬프트 + 하네스의 인터페이스 기록과 정확히 평행 — 기술의 새로움이 아니라 인터페이스 설계의 명료성이 시대를 정의한다.
7. 주요 인물·사건
- Solomon Hykes — Docker 창시자. 프랑스 출신. 2018년 Docker 떠남, 2022년 Dagger 창업.
- Rohit Seth — 2006년 Google에서 Linux cgroups 패치 작성.
- Eric Brewer — Google 엔지니어. 컨테이너로 운영하는 Google 인프라의 사상적 토대 형성.
- 2006 — Google, Linux cgroups 패치 제출
- 2008 — LXC(Linux Containers) 첫 릴리스
- 2010 — dotCloud 창업 (Y Combinator)
- 2013.03 — Docker, PyCon에서 공개 + 오픈소스
- 2013 — 회사명 dotCloud → Docker Inc.
- 2014 — libcontainer 도입 (LXC 대체)
- 2015 — OCI(Open Container Initiative) 결성
- 2017 — Docker Enterprise → Mirantis 인수(2019)
- 2020 — Docker Desktop 라이선스 변경 (대기업 유료)
- 2026 — 컨테이너가 클라우드 운영의 사실상 표준. containerd·podman 등 다양한 런타임 존재
출처
- Docker (software) - Wikipedia
- Ten Years of Docker - Robert Polding
- The Docker project turns 10! - Snyk
- The Kubelist Podcast: The Docker Story with Solomon Hykes - Heavybit
- Evolution of Docker from Linux Containers - Baeldung
그룹 시리즈
→ synthesis/group-os_g5 (시대 그룹 종합 카드)