Top

예제로 배우는 도커 2/e [100가지 노하우로 제대로 이해하는]

  • 원서명Docker in Practice, 2nd Edition (ISBN 9781617294808)
  • 지은이이안 미엘(Ian Miell), 아이단 홉슨 세이어즈(Aidan Hobson Sayers)
  • 옮긴이김용환
  • ISBN : 9791161754734
  • 36,000원
  • 2020년 12월 30일 펴냄
  • 페이퍼백 | 604쪽 | 188*235mm
  • 시리즈 : 클라우드 컴퓨팅

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/docker-practice)

요약

도커의 간단한 아이디어, 즉 애플리케이션과 애플리케이션의 의존 라이브러리를 배포 가능한 하나의 컨테이너에 패키징하는 것이 소프트웨어 산업에서 큰 반향을 일으켰다. 이제 컨테이너는 엔터프라이즈 인프라에 필수이며 도커는 모두가 인정하는 업계 표준이다. 이 책은 도커를 깊이 알고 싶은 개발자와 데브옵스 담당자에게 CI/CD, 쿠버네티스 오케스트레이션 툴, 클라우드 워크플로, 도커 스웜, 좋은 사례와 기술, 주의 깊게 봐야 할 보안 내용을 소개한다.

추천의 글

“도커를 이해하고 설정 및 관리하려면 안내서가 필요하다. 이 책은 일반적인 문제를 확인하고 해결하는 환상적인 작업을 알려준다.
- 블룸버그사(Bloomberg)의 알렉스 바실(Alex Basile)

“도커는 소프트웨어 업계 종사자들의 마음을 사로잡았다. 폭풍이 몰아치는 바다(소프트웨어 업계)를 가장 잘 항해하기 위해 꼭 필요한 책이다."
- 휘슬러 테크놀로지사(Whistler Technologies)의 야기즈 얼칸(Yagiz Erkan)

"도커를 설명한 수준이 아니라 커맨드를 더욱 잘 사용하는 방법을 알려준다. 이 책을 제대로 이해하면 유능한 데브옵스 담당자가 될 수 있다."
- 펜네오사(Penneo)의 아흐마드 나 지르 라자

“당신의 문제를 해결할 수 있는 풍부하고 실질적인 조언이 담긴 도커 책이다.”
- 도커사의 벤 퍼시만(Ben Firshman)

“4성급 레시피로 가득하다!”
- 솔리드 파이어사(SolidFire)의 채드 데비스(Chad Davis)

“개발자가 실행해 볼 수 있는 도커 트릭으로 가득하다.”
- 넷 이펙트 테크놀로지사(Net Effect Technologies)의 커크 브래트쿠스(Kirk Brattkus)

“도커를 사용할 때 매우 유용한 팁이 있다. 현장에서 유용하고 실용적이어서 실제 도커 이슈를 해결할 수 있다.”
- 아마존 고객

“읽기 쉽고 따라 하기 쉽다. 이 책을 읽으면 도커의 내부 동작 방식을 훨씬 잘 이해할 수 있다.”
- 아마존 고객

이 책에서 다루는 내용

■ 지속적 통합과 배포
■ 쿠버네티스 오케스트레이션 툴
■ 클라우드 작업 흐름 간소화
■ 도커 스웜 모드
■ 최근에 소개된 모범 사례와 기술

이 책의 대상 독자

구조화된 코드를 개발하는 기능, 소프트웨어 개발 및 배포 프로세스 인식과 같은 기본적인 개발 기술과 개념을 이해하고 있다고 가정한다. 또한 핵심 소스 제어 저장소의 기본 지식과 TCP/IP, HTTP, 포트와 같은 네트워크 기본 사항도 알고 있다는 전제하에 설명했다.

이 책의 구성

16개 장이 5개의 부로 나뉘어 있다.
1부, ‘도커의 기초’에서는 먼저 도커를 소개하고 기본 도커 커맨드를 실행할 수 있도록 도커 이해의 토대를 마련한다. 그리고 2장에서 도커의 클라이언트-서버 아키텍처와 디버깅 방법을 설명한다. 디버깅은 도커 설정 문제를 식별할 때 유용하다.

2부, ‘도커와 개발’은 독자들이 도커에 익숙하도록 돕고 머신에서 도커를 최대한 활용하는 데 중점을 둔다. 3장에서는 도커를 쉽게 시작할 수 있도록 익숙한 가상 머신의 개념과 유사한 방식으로 도커의 기초를 설명한다. 4장, 5장, 6장에서는 도커 이미지를 빌드 및 실행하고, 도커를 관리하기 위해 매일 사용하는 도커 기술을 자세히 설명한다. 7장에서는 설정 관리 기술을 살펴보면서 도커 이미지를 심층적으로 빌드하는 주제를 살펴본다.

3부, ‘도커와 데브옵스’는 소프트웨어 빌드 및 테스트의 자동화에 도커를 사용하는 것부터 구축된 소프트웨어를 여러 장소로 배포하는 것까지 데브옵스 문맥에서 도커를 사용하는 부분을 다룬다. 3부에서 도커 컴포즈를 소개하고 네트워크 시뮬레이션 및 도커 네트워크 플러그인과 같은 고급 네트워크 주제를 다루는 도커 가상 네트워크를 설명하며 마무리한다.

4부, ‘단일 머신에서 클라우드까지의 오케스트레이션’에서는 컨테이너 오케스트레이션 주제를 다룬다. 단일 호스트에서 단일 컨테이너를 실행하는 방법부터 ‘운영체제로서의 데이터 센터’에서 실행하는 도커 기반 플랫폼에서 컨테이너를 실행하는 방법까지 설명한다. 13장은 도커 기반 플랫폼을 선택할 때 고려해야 할 부분을 추가로 다룬다. 도커 기반 플랫폼을 구현할 때 엔터프라이즈 아키텍트가 무엇을 생각하는 것인가의 관점을 안내한다.

5부, ‘상용 환경의 도커’는 상용 환경에서 도커를 효과적으로 사용할 수 있는 여러 주제를 다룬다. 14장에서는 컨테이너 내부에서 실행 중인 프로세스를 보호하는 방법과 외부에 노출된 도커 데몬에 접근을 제한하는 방법을 설명하는 중요한 보안 주제를 설명한다. 15장, 16장에서 상용 환경에서 도커를 실행하기 위한 실용적인 정보를 자세히 알려준다. 15장에서는 로그 저장부터 자원 제한에 이르기까지 컨테이너 문맥에서 기존 시스템 관리자 지식을 적용하는 방법을 설명한다. 16장에서는 만날 수 있는 도커 문제를 살펴보고 도커 디버깅 및 해결할 수 있는 단계를 제공한다.

부록에서는 가상 머신 내부와 윈도우 OS를 포함해 다양한 방법으로 도커 설치, 사용 설정의 세부 사항을 포함한다.

저자/역자 소개

지은이의 말

2013년 9월, 해커 뉴스(Hacker News)를 탐색하다 ‘도커’라는 새로운 기술을 소개한 와이어드(Wired) 기사(http://www.wired.com/2013/09/docker/)를 우연히 발견했다. 기사를 읽고 도커의 혁신적인 잠재력을 깨닫게 되면서 점점 더 흥분했다.
10년 넘게 근무한 회사에서 소프트웨어를 빨리 제공할 수 있는 방법을 고민하던 차였다. 배포 환경은 비용이 많이 들고 시간이 오래 걸리며 수동적인 데다가 매력이라고는 찾아볼 수 없는 작업이었다. 지속적 통합(Continuous Integration)은 거의 없었고 개발 환경을 설정할 때는 인내심으로 버텼다. 내 직책에 ‘데브옵스 관리자(DevOps Manager)’라는 단어가 들어 있어 배포 문제를 해결해야 하는 특별한 동기도 있었다.
회사 메일링 목록에 열정으로 가득 찬 동료(동료 중 하나가 공동 저자가 됐다)를 모집했고 함께 스컹크 웍스(skunkworks) 팀을 만들었다. 베타 툴을 비즈니스 이점으로 전환해 VM 비용을 낮추고 소프트웨어 구축과 배포에 관해 새로운 사고방식으로 접근했다. 조직의 요구에 맞게 자동화 툴(ShutIt)을 구축하고 오픈소스로 공개했다.

도커는 효과적으로 해결할 수 없었던 많은 문제를 해결하기 위해 패키징됨과 동시에 유지 관리되는 툴이 됐다. 도커는 최고의 오픈소스로서 여가 시간을 활용하고 기술 부채를 극복하며 매일 학습하도록 도전 의식을 불러 일으켰다. 도커뿐 아니라 지속적 통합, 지속적 배포, 패키징, 자동화, 사람들이 빠르고 파괴적인 기술 변화에 대응하는 방법을 알게 됐다.
도커는 매우 광범위하게 사용할 수 있는 툴이다. 리눅스를 사용해 소프트웨어를 실행하는 곳마다 도커가 영향을 줄 수 있다. 도커의 범위가 소프트웨어만큼 넓기 때문에 도커라는 주제로 책을 작성하는 것은 어렵다. 도커 생태계는 소프트웨어 산업에서 근본적인 변화에서 발생하는 요구를 충족시키는 솔루션을 생산하는 데 정말 놀라운 속도로 진행된다. 그런 면에서 작업이 더욱 부담스럽게 느껴질 때도 있다. 시간이 지나면서 문제 및 해결책의 형태가 점차 친숙해져 우리의 경험을 책으로 전달하려 많이 노력했다. 내용을 이해하면 특정 기술과 비즈니스 제약 조건의 해결책을 파악할 수 있을 것이다.

개발자 모임에서 소통하면서 도커를 기꺼이 수용하려는 조직은 상당히 빠르게 효과를 봤음을 알게 됐다. 이 책은 데스크톱, 데브옵스 파이프라인을 거쳐 도커를 사용해 상용 환경에 배포하는 방법을 다룬다. 완전히 정통이라고 보기는 어렵지만 엔지니어로서 실용성을 담아야 한다고 생각하며 글을 썼다. 물론 돈을 절약할 때도 매우 실용적이어야 한다. 책에 실린 모든 내용은 실무 현장에서 얻은 실제 교훈을 기반으로 쓴 것이니 좋은 정보를 많이 얻길 기대한다.

이 책은 저마다 다른 상황에서 다양한 기술을 사용해 실제 도커 사용 예시를 보여준다. 다른 기술에 관한 지식 없이 이 책의 기술을 설명하려고 최대한 노력했다.
1부, 2부에서 도커의 기초 설명으로 시작해 단일 머신에서 도커를 개발하는 데 중점을 둔다. 3부에서는 데브옵스 파이프라인에서 도커를 사용해 지속적 통합, 지속적 배포, 테스트를 다룬다. 4부에서 오케스트레이션을 통해 도커 컨테이너를 확장 가능한 방법을 살펴본다. 마지막 16장에서는 상용 환경에 도커를 실행하는 환경을 다루며 표준 상용 환경 작업, 무엇이 잘못될 수 있고 어떻게 대처해야 할지에 중점을 둔다.
도커는 광범위하고 유연하며 역동적인 툴이다. 도커 생태계에서 미래에 사용할 수 있는 툴과 기술을 확실하게 평가할 수 있는 능력을 제공하기 위해 실제 애플리케이션과 예시를 통해 중요한 개념을 전달하도록 노력했다.
도커가 우리의 삶을 더 편안하게 하고 심지어 재미있게 해주는 여러 방법을 담아 즐거운 여행으로 느낄 수 있도록 글을 썼다. 도커에 몰입해 전체 소프트웨어 생명 주기 동안 흥미로운 많은 소프트웨어 기술로 독자에게 자극을 주는 방법을 담았다. 이 책을 통해 도커 핵심 기술을 독자가 공유할 수 있기를 바란다.

지은이 소개

이안 미엘(Ian Miell)

영국에서 일하는 노련한 인프라 아키텍트다. 영국 최대 게임 회사 중 한 곳에서 도커를 사용해 데브옵스로 전환했다.

아이단 홉슨 세이어즈(Aidan Hobson Sayers)

영국에서 일하는 노련한 인프라 아키텍트다. 영국 최대 게임 회사 중 한 곳에서 도커를 사용해 데브옵스로 전환했다.

옮긴이의 말

요즘은 도커를 사용해 서비스로 활용하는 것뿐 아니라 툴, 테스팅, POC로 사용하는 경우가 많아졌습니다. 그만큼 도커는 점점 대중화되고 있습니다. 도커는 효과적으로 해결할 수 없었던 많은 문제를 해결하기 위해 패키징돼 유지 관리하는 툴로 사용되고 있습니다. 도커는 최고의 오픈 소스로서 여가 시간을 활용하고 기술 부채를 극복하며 매일 학습하도록 도전하고 있습니다.
하지만 우리는 도커의 내부 구조를 얼마나 이해하고 있을까요? 저는 도커로 파이썬, 스칼라/자바 애플리케이션을 쿠버네티스 클러스터에 배포하고 운영한 적이 있습니다. 당시 “도커를 깊이 알지 않아도 다 돌아가는구나.”라고 생각했던 적도 있습니다. 하지만 결국 도커에 대한 얕은 지식으로 문제가 발생해 ‘삽질’할 때가 많았습니다. 단순히 커맨드만 안다고 도커를 이해했다고 말하기는 어려웠습니다.
이 책을 보고 나서 도커를 상대하는 것과 더불어 쿠버네티스도 이해되기 시작했습니다. 도커의 단점을 파악하니 도커의 보안 이슈를 이해할 수 있었습니다. 또한 마라톤/메소스 및 쿠버네티스와 같은 오케스트레이션 툴도 제대로 보이기 시작해 앞으로 더 잘 사용하고 싶어졌습니다.
저는 도커가 개발자와 데브옵스에게 평생 친구가 될 것이라고 장담합니다. 점차 도커는 대중화될 것이고 곳곳에서 사용될 것입니다. 이 책으로 도커를 깊이 알아가는 기회가 되면 좋겠습니다.
이 책은 VM에서 전환하기, 시스템을 마이크로 서비스로 나누기, 영속성 볼륨, 고급 이미지 구축 기술, 지속적 통합, 셀레늄 테스트, etcd와 confd, 네트워크 시뮬레이션, 보안, 모니터링, 성능 및 디버깅 등과 같은 컨테이너와 관련된 실무 이슈를 해결하는 내용을 담고 있습니다. 상용 환경에서 도커를 다루기 위해 중요한 설정 관리 및 오케스트레이션 툴을 설명합니다. make와 같은 전통적인 유닉스 툴, 도커 컴포즈, 헬리오스(Helios), 도커 웜 및 쿠버네티스와 같은 도커 기본 툴을 사용해 도커 파일(Dockerfile)을 관리하는 상세한 작업 예시를 소개합니다.
마지막으로 도커와 관련된 툴에 관한 버그와 단점을 실제로 작업을 수행할 수 있도록 실용적인 조언과 팁을 전합니다. 이 책은 도커 생태계에서 미래에 사용할 수 있는 툴과 기술을 확실하게 평가할 수 있는 능력을 제공하기 위해 실제 애플리케이션과 예시로 독자를 이해시키고자 합니다. 여러분도 도커에 몰입해 전체 소프트웨어 생명 주기 동안 흥미로운 소프트웨어 기술에 자극받길 바랍니다.

옮긴이 소개

김용환

알티캐스트, 네이버, 라인, SK플래닛, 카카오를 거쳐 현재 카카오커머스에서 개발자로 일하고 있다. 마흔다섯 살의 평범한 개발자로, 다양한 도전에서 에너지를 얻으며 개발과 실무 경험을 블로그(http://knight76.tistory.com)에 기록하고 있다.
정보통신산업진흥원(NIPA) 산하의 소프트웨어공학포털에 개발 관련 내용을 연재했으며, 여러 콘퍼런스/세미나에서 그동안 쌓은 개발 지식을 발표하고 있다. 나 자신은 물론 누군가에게 도움이 될 수 있다는 생각으로 번역을 시작했는데, 어느덧 15번째 책이다.

목차

목차
  • 1부. 도커의 기초
  • 1장. 도커 살펴보기
  • 2장. 도커 내부 이해하기

  • 2부. 도커와 개발
  • 3장. 도커를 경량 가상 머신으로 사용하기
  • 4장. 이미지 빌드하기
  • 5장. 실행 중인 컨테이너
  • 6장. 매일 도커 사용하기
  • 7장. 설정 관리: 순서대로 정리하기

  • 3부. 도커와 데브옵스
  • 8장. 지속적 통합: 개발 파이프라인의 속도 높이기
  • 9장. 지속적 배포: 도커 원칙에 완벽히 적합
  • 10장. 네트워크 시뮬레이션: 불편함 없는 실제와 비슷한 환경 테스트

  • 4부. 단일 머신에서 클라우드까지의 오케스트레이션
  • 11장. 컨테이너 오케스트레이션 입문
  • 12장. 도커를 운영체제로 구성된 데이터 센터
  • 13장. 도커 플랫폼

  • 5부. 상용 환경의 도커
  • 14장. 도커 및 보안
  • 15장. 상용 환경에서 도커 실행하기
  • 16장. 상용 환경에서의 도커 사용: 도전 과제 처리하기

  • 부록 A. 도커 설치 및 사용
  • 부록 B. 도커 설정
  • 부록 C. 베이그란트

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안