한 번 빌드하면 어디서나 실행할 수 있는 애플리케이션 배포 시스템 Docker만 있으면 언제 어디서나 애플리케이션을 실행할 수 있는 안전한 런타임 환경을 구성할 수 있다. 시스템에 따라 설치, 설정, 의존성 같은 반복 작업을 하지 않아도 애플리케이션을 빠르게 배포하는 것이 가능하다. 가상 머신이 시스템간 호환성, 이동성에 제약이 있다면 Docker는 그런 제약에서 자유롭다. 아마존 웹 서비스, 구글 클라우드 플랫폼, 마이크로소프트 애저 같은 플랫폼을 자유롭게 이동하고 배포할 수 있다.
가상 머신의 부하 없이 즐기는 가상 환경 하이퍼바이저가 CPU, RAM, 스토리지 같은 하드웨어를 전부 추상화했다면, Docker는 운영체제 커널만 추상화했다. Docker는 운영체제를 공유하면서 애플리케이션에 필요한 가상화와 격리를 제공하기 때문에 가볍고 빠르다. 이미지 생성, 스냅샷 생성, 초기화도 Docker라면 빠르게 처리할 수 있다.
개발자와 운영자를 위한 진정한 배포 시스템 런타임 환경을 한 번 만들고, 패키징만 하면 어떤 머신에서나 반복해서 실행할 수 있다. 가상 머신처럼 호스트와 격리된 환경에서 실행된다. 개발자는 코드 품질에 더 많은 시간을 집중할 수 있고, 운영자는 개별 서버를 일일이 관리하는 대신 배포 이미지 관리에 집중함으로써 시스템의 일관성을 높일 수 있다. Docker 기반 배포를 구현하면 개발, 테스트, 서비스 단계의 시스템 불일치나 호환성 문제를 줄이거나 제거할 수 있다.
__1.1 가상 머신과 Docker ____1.1.1 가상 머신 ____1.1.2 Docker ____1.1.3 리눅스 컨테이너 __1.2 Docker 이미지와 컨테이너
2장 ▶ Docker 설치하기
__2.1 리눅스 ____2.1.1 자동 설치 스크립트 ____2.1.2 우분투 ____2.1.3 RedHat Enterprise Linux, CentOS ____2.1.4 최신 바이너리 사용하기 __2.2 Mac OS X __2.3 Windows
3장 ▶ Docker 사용해보기
__3.1 search 명령으로 이미지 검색하기 __3.2 pull 명령으로 이미지 받기 __3.3 images 명령으로 이미지 목록 출력하기 __3.4 run 명령으로 컨테이너 생성하기 __3.5 ps 명령으로 컨테이너 목록 확인하기 __3.6 start 명령으로 컨테이너 시작하기 __3.7 restart 명령으로 컨테이너 재시작하기 __3.8 attach 명령으로 컨테이너에 접속하기 __3.9 exec 명령으로 외부에서 컨테이너 안의 명령 실행하기 __3.10 stop 명령으로 컨테이너 정지하기 __3.11 rm 명령으로 컨테이너 삭제하기 __3.12 rmi 명령으로 이미지
4장 ▶ Docker 이미지 생성하기
__4.1 Bash 익히기 __4.2 Dockerfile 작성하기 __4.3 build 명령으로 이미지 생성하기
5장 ▶ Docker 살펴보기
__5.1 history 명령으로 이미지 히스토리 살펴보기 __5.2 cp 명령으로 파일 꺼내기 __5.3 commit 명령으로 컨테이너의 변경사항을 이미지로 생성하기 __5.4 diff 명령으로 컨테이너에서 변경된 파일 확인하기 __5.5 inspect 명령으로 세부 정보 확인하기
6장 ▶ Docker 좀 더 활용하기
__6.1 Docker 개인 저장소 구축하기 ____6.1.1 로컬에 이미지 데이터 저장 ____6.1.2 push 명령으로 이미지 올리기 ____6.1.3 Amazon S3에 이미지 데이터 저장 ____6.1.4 기본 인증 사용하기 __6.2 Docker 컨테이너 연결하기 __6.3 다른 서버의 Docker 컨테이너에 연결하기 __6.4 Docker 데이터 볼륨 사용하기 __6.5 Docker 데이터 볼륨 컨테이너 사용하기 __6.6 Docker 베이스 이미지 생성하기 ____6.6.1 우분투 베이스 이미지 생성하기 ____6.6.2 CentOS 베이스 이미지 생성하기 ____6.6.3 빈 베이스 이미지 생성하기 __6.7 Docker 안에서 Docker 실행하기
7장 ▶ Dockerfile 자세히 알아보기
__7.1 .dockerignore __7.2 FROM __7.3 MAINTAINER __7.4 RUN __7.5 CMD __7.6 ENTRYPOINT __7.7 EXPOSE __7.8 ENV __7.9 ADD __7.10 COPY __7.11 VOLUME __7.12 USER __7.13 WORKDIR __7.14 ONBUILD
8장 ▶ Docker로 애플리케이션 배포하기
__8.1 서버 한 대에 애플리케이션 배포하기 ____8.1.1 개발자 PC에서 Git 설치 및 저장소 생성하기 ____8.1.2 개발자 PC에서 Node.js로 웹 서버 작성하기 ____8.1.3 개발자 PC에서 Dockerfile 작성하기 ____8.1.4 개발자 PC에서 SSH 키 생성하기 ____8.1.5 서버에 Git 설치 및 저장소 생성하기 ____8.1.6 서버에 Docker 설치하기 ____8.1.7 서버에 SSH 키 설정하기 ____8.1.8 서버에 Git Hook 설정하기 ____8.1.9 개발자 PC에서 소스 Push하기 __8.2 서버 여러 대에 애플리케이션 배포하기 ____8.2.1 개발자 PC에서 Git 설치 및 저장소 생성하기 ____8.2.2 개발자 PC에서 Node.js로 웹 서버 작성하기 ____8.2.3 개발자 PC에서 Dockerfile 작성하기 ____8.2.4 개발자 PC에서 SSH 키 생성하기 ____8.2.5 배포 서버에 Git 설치 및 저장소 생성하기 ____8.2.6 배포 서버에서 SSH 키 생성하기 ____8.2.7 배포 서버에 Docker 설치하기 ____8.2.8 배포 서버에 Docker 레지스트리 서버 설정하기 ____8.2.9 배포 서버에 SSH 키 설정하기 ____8.2.10 배포 서버에 Git Hook 설정하기 ____8.2.11 애플리케이션 서버에 Docker 설치하기 ____8.2.12 애플리케이션 서버에 SSH 키 설정하기 ____8.2.13 개발자 PC에서 소스 Push
9장 ▶ Docker 모니터링하기
__9.1 모니터링 서버 Dockerfile 작성하기 __9.2 애플리케이션 서버 Dockerfile 작성 __9.3 웹 브라우저에서 그래프 확인
10장 ▶ Amazon Web Services에서 Docker 사용하기
__10.1 Amazon EC2에서 Docker 사용하기 __10.2 AWS Elastic Beanstalk에서 Docker 사용하기 ____10.2.1 AWS 콘솔에서 Docker 애플리케이션 배포하기 ____10.2.2 Docker Hub 공개 저장소 이미지 사용하기 ____10.2.3 Docker Hub 개인 저장소 이미지 사용하기 ____10.2.4 Git으로 Elastic Beanstalk Docker 애플리케이션 배포하기
11장 ▶ Google Cloud Platform에서 Docker 사용하기
__11.1 Google Cloud SDK 설정하기 __11.2 Compute Engine에서 Docker 사용하기 __11.3 Container Engine에서 Docker 사용하기
12장 ▶ Microsoft Azure에서 Docker 사용하기
13장 ▶ Docker Hub 사용하기
__13.1 Docker Hub 가입하기 __13.2 push 명령으로 이미지 올리기 __13.3 Docker Hub 개인 저장소 생성하기 __13.4 Docker Hub Automated Build 활용하기
14장 ▶ Docker Remote API 사용하기
__14.1 Docker Remote API Python 라이브러리 사용하기 ____14.1.1 컨테이너 생성 및 시작하기 ____14.1.2 이미지 생성하기 ____14.1.3 컨테이너 목록 출력하기 ____14.1.4 이미지 목록 출력하기 ____14.1.5 기타 예제 및 함수 __14.2 Docker Remote API Python 라이브러리로 HTTPS 통신하기 ____14.2.1 인증서 생성하기 ____14.2.2 Python 라이브러리 사용하기
15장 ▶ CoreOS 사용하기
__15.1 VirtualBox에 CoreOS 설치하기 ____15.1.1 systemd로 서비스 실행하기 __15.2 Vagrant로 CoreOS 설치하기 __15.3 etcd 사용하기 ____15.3.1 etcd 키, 디렉터리 생성하기 ____15.3.2 etcd 키, 디렉터리 목록 출력하기 ____15.3.3 etcd 키, 디렉터리 자동 삭제 설정하기 ____15.3.4 etcd 키 감시하기 ____15.3.5 etcd 기타 명령 __15.4 fleet 사용하기 ____15.4.1 fleet 머신 목록 출력하기 ____15.4.2 fleet으로 유닛 실행하기 ____15.4.3 fleet 유닛 목록 출력하기 ____15.4.4 fleet 유닛 상태 확인하기 ____15.4.5 fleet 자동 복구 확인하기 ____15.4.6 fleet 전용 옵션 사용하기 ____15.4.7 fleet 유닛 파일 템플릿 활용하기 ____15.4.8 fleet 사이드킥 모델 활용하기 ____15.4.9 fleet 기타 명령 __15.5 클라우드 서비스에서 CoreOS 사용하기 ____15.5.1 Amazon EC2에서 CoreOS 사용하기 ____15.5.2 Google Compute Engine에서 CoreOS 사용하기
16장 ▶ Docker로 워드프레스 블로그 구축하기
__16.1 워드프레스 Dockerfile 작성하기 __16.2 MySQL 데이터베이스 Dockerfile 작성하기 __16.3 워드프레스와 데이터베이스 컨테이너 생성하기
17장 ▶ Docker로 Ruby on Rails 애플리케이션 구축하기
__17.1 Ruby와 Rails 설치하기 __17.2 Rails Dockerfile 작성하기 __17.3 PostgreSQL 데이터베이스 Dockerfile 작성하기 __17.4 Rails와 데이터베이스 컨테이너 생성하기
18장 ▶ Docker로 Django 애플리케이션 구축하기
__18.1 Django 설치하기 __18.2 Django Dockerfile 작성하기 __18.3 Oracle 데이터베이스 Dockerfile 작성하기 __18.4 Django와 데이터베이스 컨테이너 생성하기
19장 ▶ Docker 활용 시나리오
__19.1 로드 밸런서와 연계한 확장 전개 __19.2 개발, 테스트, 운영을 통합 __19.3 손쉬운 서비스 이전 __19.4 테스트 용도
20장 ▶ Docker 명령어 및 옵션 목록
__20.1 attach __20.2 build __20.3 commit __20.4 cp __20.5 create __20.6 diff __20.7 events __20.8 exec __20.9 export __20.10 history __20.11 images __20.12 import __20.13 info __20.14 inspect __20.15 kill __20.16 load __20.17 login __20.18 logout __20.19 logs __20.20 port __20.21 pause __20.22 ps __20.23 pull __20.24 push __20.25 restart __20.26 rm __20.27 rmi __20.28 run __20.29 save __20.30 search __20.31 start __20.32 stop __20.33 tag __20.34 top __20.35 unpause __20.36 version __20.37 wait
부록 ▶
01. Docker 컴파일하기 02. 우분투 한국 미러 사용하기 03. 참고 사이트
ㆍ지은이
이재홍
소개
YRASIS.COM이라는 개인 웹사이트를 운영하고 있으며, 여러 가지 기술 문서를 작성하여 공개해왔다. 엔씨소프트에서 리니지 이터널 개발에 참여하였고, 엔트리브소프트에서 모바일 게임 서버를 개발했다. 또한, FFS File System Driver for Windows라는 오픈 소스 프로젝트를 진행하기도 하였으며, 최근에는 모바일 게임 엔진인 Cocos2d-x를 Tizen용으로 개발하여 메인스트림에 포함시켰다. 현재 주 관심 분야는 운영체제 커널, 파일시스템, 소프트웨어 개발 자동화, 게임 엔진, 클라우드 플랫폼, 분산 처리 시스템이다. 완전 자동화된 나만의 집을 짓는 것과 오픈 소스 재단 설립이 꿈이다.
사이트 http://pyrasis.com
주요 저서
<윈도우 프로젝트 필수 유틸리티: Subversion, Trac, CruiseControl.NET>(한빛미디어)
<아마존 웹 서비스를 다루는 기술>(길벗)
<가장 빨리 만나는 Docker>(길벗)
독자의견 남기기