트러블슈팅 도커 [도커의 활용과 문제 해결 방법]
- 원서명Troubleshooting Docker: Strategically design, troubleshoot, and automate Docker containers from development to deployment (ISBN 9781783552344)
- 지은이바이브하브 콜리(Vaibhav Kohli), 라즈딥 두아(Rajdeep Dua), 존 우튼(John Wooten)
- 옮긴이남기혁
- ISBN : 9791161751887
- 30,000원
- 2018년 08월 22일 펴냄 (절판)
- 페이퍼백 | 348쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 오픈소스 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
도커의 설치와 기본 관리 기능부터, 네트워킹, 쿠버네티스, 공용 클라우드에서 활용하는 방법에 이르기까지, 전반적인 도커 활용법과 이 과정에서 발생할 수 있는 다양한 문제를 해결하는 기법을 설명한다. 또한 문제를 사전에 방지하기 위한 팁과 도커 기반의 워크플로우를 구성하는 방법도 소개한다.
이 책에서 다루는 내용
■ 도커 관련 도구를 비롯해 서비스, 마이크로서비스, N티어 애플리케이션을 설치하는 방법
■ 자동화 도구를 통해 재사용 가능하고 이식성 높은 컨테이너를 생성하는 방법
■ 컨테이너끼리 연결하거나 네트워킹하는 방법
■ 컨테이너에 볼륨을 안전하게 붙이는 방법
■ 도커 API 사용 및 문제 해결 방법
■ 공용 클라우드에 도커를 배치하는 과정에서 발생하는 문제의 해결 방법
■ 쿠버네티스(Kubernetes)를 통해 컨테이너를 쉽게 관리하는 방법
이 책의 대상 독자
숙련된 솔루션 아키텍트와 개발자, 프로그래머, 시스템 엔지니어, 관리자들이 도커 컨테이너화와 관련해 흔히 발생하는 문제를 해결할 때 도움 받을 수 있는 책이다. 자동화된 배치를 제공하는 프로덕션 수준의 도커 컨테이너를 구축하려면 도커의 기본 기능뿐만 아니라 고급 기능에 관련된 문제 해결 방법을 갖춰야 한다. 이 책의 내용은 리눅스 커맨드라인 문법, 단위 테스트, 도커 레지스트리, 깃허브뿐만 아니라 최신 컨테이너 호스팅 플랫폼과 클라우드 서비스 프로바이더(CSP)에 대해서도 깊이 있게 이해하고 있다는 가정하에 구성됐다. 또한 이 책을 통해 애초에 문제가 발생할 여지를 없애기 위한 여러 가지 방법과 도구도 소개한다.
이 책의 구성
1장. ‘컨테이너 및 도커 개요’에서는 컨테이너화의 기본 개념에 대해 애플리케이션 및 OS 기반 컨테이너 예시를 토대로 소개한다. 도커 기술의 특징과 장점, 도커 컨테이너의 라이프사이클에 대해 살펴본다.
2장. ‘도커 설치 방법’에서는 우분투, CoreOS, CentOS, 레드햇 리눅스, 페도라, 수세 리눅스(SUSE Linux) 등의 여러 리눅스 배포판에서 도커를 설치하는 방법을 단계별로 소개한다.
3장. ‘베이스 및 레이어드 이미지 빌드 방법’에서는 프로덕션 수준의 애플리케이션 컨테이너화에서 가장 핵심적인 작업인 이미지 빌드 방법을 소개한다. 이 과정에서 처음부터 직접 수작업으로 이미지를 빌드하는 방법도 소개한다. 그런 다음, 도커파일로 레이어드 이미지(layered image)를 빌드하는 방법과 도커파일에서 사용하는 커맨드도 자세히 살펴본다.
4장. ‘마이크로서비스 및 N티어 애플리케이션 설계’에서는 개발부터 테스트까지 자연스럽게 이어지도록 설계된 예제 환경을 살펴본다. 이러한 환경은 리소스 프로비저닝과 설정 작업을 수작업으로 처리하거나 그 과정에서 에러가 발생하는 것을 최소화하는 데 도움이 된다. 이 과정에서 마이크로서비스 애플리케이션을 테스트하고 자동화하고 배치하고 관리하는 방법도 간략히 소개한다.
5장. ‘컨테이너 기반 애플리케이션 다루기’에서는 도커 레지스트리에 대해 소개한다. 먼저 도커 허브를 이용한 도커 공용 리포지터리의 기본 개념과 다양한 사용자와 컨테이너를 공유하는 방법을 소개한다. 도커는 사설 도커 레지스트리를 구축하는 옵션도 제공한다. 이 장에서는 이러한 사설 레지스트리를 통해 도커 컨테이너를 조직 내부에서 푸시(push)하고 풀(pull)하고 공유(share)하는 방법을 살펴본다.
6장. ‘컨테이너 운영하기’에서는 모든 호스트 디바이스에 접근할 수 있는 프리빌리지드 컨테이너(privileged container)와 도커 컨테이너에서 하부 호스트를 관리하는 서비스 구동에 필요한 백그라운드 서비스를 실행하는 수퍼 프리빌리지드 컨테이너(super-privileged container)를 소개한다.
7장. ‘도커 컨테이너의 네트워킹 스택 관리하기’에서는 Docker0 브릿지를 통한 도커 네트워킹 메커니즘과 이에 관련된 설정 및 문제 해결 방법을 설명한다. 또한 도커 네트워크와 외부 네트워크 사이에서 발생하는 통신 문제를 해결하는 방법도 살펴본다. 그리고 위브(Weave), OVS, 플래널(Flannel), 그리고 도커에서 최근 추가된 오버레이 네트워크를 비롯한 다양한 네트워킹 기능을 통해 여러 호스트에 있는 컨테이너끼리 통신하는 방법도 살펴본다. 이러한 방법들을 모두 비교해보고 각각을 설정할 때 발생하는 문제를 해결하는 방법도 소개한다.
8장. ‘쿠버네티스로 도커 컨테이너 관리하기’에서는 쿠버네티스를 통해 도커를 관리하는 방법을 소개한다. 이 과정에서 다양한 배치 시나리오를 살펴보고 쿠버네티스를 베어메탈(Bare Metal) 머신, AWS, vSphere, 미니큐브(minikube) 등에 배치하는 과정에서 발생하는 여러 가지 문제를 해결하는 방법도 소개한다. 또한 쿠버네티스 포드(Kubernetes pod)를 효과적으로 배치하고, 쿠버네티스와 관련된 문제를 디버깅하는 방법도 살펴본다.
9장. ‘데이터 볼륨 사용법’에서는 도커와 관련된 데이터 볼륨과 스토리지 드라이버 개념을 자세히 살펴본다. 데이터 볼륨과 관련해 발생하는 문제를 해결하기 위한 네 가지 접근 방법을 소개하고 각각의 장단점을 분석한다. 첫 번째 방법인 도커 컨테이너 내부에 데이터를 저장하는 것은 가장 기본적인 방법이지만, 프로덕션 환경에서 데이터를 관리하고 처리하는 데 충분한 유연성을 제공하지 못한다. 두 번째와 세 번째 접근 방법은 데이터 전용 컨테이너나 호스트에 직접 저장하는 것이다. 네 번째 접근 방법은 서드파티 볼륨 플러그인인 플로커(Flocker)나 콘보이(Convoy)를 이용하는 것으로서 데이터를 별도의 블록에 저장하는데, 컨테이너를 한 호스트에서 다른 호스트로 옮길 때나 해당 컨테이너가 죽을 때도 데이터에 대한 신뢰성을 보장할 수 있다.
10장. ‘공용 클라우드(AWS와 애저)에 도커 배치하기’에서는 마이크로소프트 애저와 AWS에 도커를 배치하는 방법을 소개한다.
목차
목차
- 1장. 컨테이너 및 도커 개요
- 컨테이너 개념
- OS 컨테이너
- 애플리케이션 컨테이너
- 도커 자세히 들여다보기
- 도커 컨테이너의 장점
- 도커 라이프사이클
- 도커 설계 패턴
- 유니커널
- 요약
- 컨테이너 개념
- 2장. 도커 설치 방법
- 우분투에 도커 설치하기
- 사전 준비 사항
- 패키지 정보 업데이트
- 새로운 GPG 키 추가하기
- 문제 해결
- 새로운 도커 패키지 소스 추가하기
- 우분투 패키지 업데이트
- 리눅스 이미지 엑스트라 설치
- 옵션: 앱아머 설치
- 도커 설치
- 레드햇 리눅스에 도커 설치하기
- 커널 버전 확인
- 얌 패키지 업데이트
- 얌 리포지터리 추가하기
- 도커 패키지 설치하기
- 도커 서비스 구동하기
- 도커 설치 테스트하기
- 설치 파라미터 확인
- 문제 해결
- AWS에 CentOS VM을 배치해 도커 컨테이너 구동하기
- 커널 버전 확인
- 얌 패키지 업데이트
- 얌 리포지터리 추가하기
- 도커 패키지 설치하기
- 도커 서비스 구동하기
- 도커가 제대로 설치됐는지 확인하기
- 설치 파라미터 확인하기
- CoreOS에 도커 설치하기
- CoreOS 채널 설치하기
- 문제 해결
- 페도라에 도커 설치하기
- 커널 버전 확인
- DNF로 설치하기
- 얌 리포지터리에 추가하기
- 도커 패키지 설치하기
- 스크립트로 도커 설치하기
- 도커 설치 스크립트 실행하기
- 수세 리눅스에 도커 설치하기
- AWS에 수세 리눅스 VM 구동하기
- 커널 버전 확인
- Containers-Module 추가하기
- 도커 설치하기
- 도커 서비스 구동하기
- 도커가 제대로 설치됐는지 확인하기
- 문제 해결
- 요약
- 우분투에 도커 설치하기
- 3장. 베이스 및 레이어드 이미지 빌드 방법
- 컨테이너 이미지 빌드하기
- 도커 레지스트리에서 제공하는 공식 이미지
- 베이스 이미지 직접 빌드하기
- 레이어드 이미지 빌드하기
- 빌드한 이미지 테스트하고 디버깅하기
- 문제 해결과 관련된 도커 세부 사항
- docker version
- docker info
- 데비안/우분투에서 발생한 문제의 해결 기법
- 설치된 도커 이미지 목록 확인하기
- 도커 이미지를 수동으로 구동하기
- 캐시에 저장된 파일시스템 상태 확인하기
- 이미지 레이어 ID를 디버그 컨테이너로 활용하기
- 보충 예제
- 오류가 발생한 컨테이너 프로세스 검사하기
- 그 밖에 다른 유용한 정보
- sysdig으로 디버깅하기
- 트러블슈팅: 오픈 커뮤니티에 공헌하기
- 이미지 빌드 자동화
- 단위 테스트를 적용한 배치
- 테스트를 적용한 배치 작업을 자동화하기
- 요약
- 컨테이너 이미지 빌드하기
- 4장. 마이크로서비스 및 N티어 애플리케이션 설계
- 과장 혹은 오만
- 모놀리딕 아키텍처
- N티어 애플리케이션 아키텍처
- 3티어 웹 애플리케이션 만들기
- 마이크로서비스 아키텍처
- 최신 애플리케이션 구조로 전환하는 방법
- 마이크로서비스 관리하기
- 마이크로서비스 관리하기
- N티어 애플리케이션을 여러 개의 이미지로 분할하기
- 애플리케이션을 구성하는 여러 티어가 함께 작동하게 만들기
- 요약
- 5장. 컨테이너 기반 애플리케이션 다루기
- 도커 레지스트리를 통한 재배포
- 도커 공용 리포지터리(도커 허브)
- 사설 도커 레지스트리
- 도커 허브에 이미지 올리기
- 사설 로컬 도커 레지스트리 설치
- 이미지를 다른 호스트로 옮기기
- 이미지 서명을 통해 무결성 보장하기
- 도커 트러스티드 레지스트리
- 도커 UCP
- 요약
- 도커 레지스트리를 통한 재배포
- 6장. 컨테이너 운영하기
- 프리빌리지드 컨테이너
- 트러블슈팅 팁
- 수퍼 프리빌리지드 컨테이너
- 도커 컨테이너의 규모 확장 관련 트러블슈팅
- 퍼핏
- 이미지
- 컨테이너
- 네트워킹
- 도커 컴포즈
- 트러블슈팅 팁
- 앤서블
- 앤서블을 이용한 도커 자동화
- 앤서블 컨테이너
- 트러블슈팅 팁
- 셰프
- 요약
- 프리빌리지드 컨테이너
- 7장. 도커 컨테이너의 네트워킹 스택 관리하기
- 도커 네트워킹
- docker0 브릿지
- 도커 브릿지 설정 관련 문제의 해결 방법
- DNS 설정
- 컨테이너와 외부 네트워크 통신에 관련된 문제의 해결 방법
- 특정 컨테이너에서 SSH 접속을 하지 못하게 제한하기
- 컨테이너 링크하기
- 립네트워크와 컨테이너 네트워크 모델
- CNM 오브젝트
- 오버레이 및 언더레이 네트워크 기반의 도커 네트워킹 도구
- 플래널
- 위브
- 프로젝트 칼리코
- 도커 엔진 스웜 모드에서 오버레이 네트워크 설정하기
- 멀티호스트 도커 네트워킹 솔루션 비교
- 도커에서 OVS를 사용하도록 설정하기
- 단일 호스트에 OVS를 설정하는 과정에서 발생하는 문제의 해결 방법
- OVS를 여러 호스트에 설정하는 과정에서 발생할 수 있는 문제의 해결 방법
- 요약
- 8장. 쿠버네티스로 도커 컨테이너 관리하기
- 베어메탈 머신에 쿠버네티스 배치하기
- 페도라에서 쿠버네티스를 직접 설정할 때 발생할 수 있는 문제의 해결 방법
- 미니큐브로 쿠버네티스 배치하기
- UIAWS에 쿠버네티스 배치하기
- vSphere에 쿠버네티스 배치하기
- 쿠버네티스 설정 과정에서 발생하는 문제의 해결 방법
- 쿠버네티스 포드 배치하기
- 프로덕션 환경에 쿠버네티스 배치하기
- 쿠버네티스 디버깅에 관련된 이슈
- 요약
- 9장. 데이터 볼륨 사용법
- 도커 볼륨을 제대로 이해해서 문제 예방하기
- 기본 활용 사례: 도커 컨테이너에 데이터 저장하기
- 데이터 전용 컨테이너
- 데이터 전용 컨테이너 생성하기
- 호스트와 도커 컨테이너끼리 데이터 공유하기
- 호스트에 매핑된 볼륨을 공유 스토리지에 백업하기
- 플로커
- 플로커 클라이언트 노드에서 설정할 작업
- 콘보이
- 도커 스토리지 드라이버 성능
- UFS 기초
- 도커에서 디바이스 매퍼를 사용하는 방식
- 요약
- 10장. 공용 클라우드(AWS와 애저)에 도커 배치하기
- 아마존 ECS 아키텍처
- 아마존 ECS 배치 과정에서 발생하는 문제의 해결 방법
- ECS 클러스터에 있는 도커 컨테이너 업데이트하기
- 마이크로소프트 애저 컨테이너 서비스 아키텍처
- 마이크로소프트 애저 컨테이너 서비스 관련 문제의 해결 방법
- AWS 및 애저용 도커
- 요약