처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 (컨테이너 기초부터 배포, 앱 구축, 패키징, 클라우드 운영, CD 자동화까지 실무 활용법 한 권으로 끝내기 | 개정신

처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 (컨테이너 기초부터 배포, 앱 구축, 패키징, 클라우드 운영, CD 자동화까지 실무 활용법 한 권으로 끝내기 | 개정신

$44.18
Description
실전 애플리케이션 개발과 운영을 위한 도커/쿠버네티스 컨테이너 기술 완벽 해설서
도커와 쿠버네티스를 활용한 컨테이너 기술의 핵심을 집대성한 실전 입문서다. 컨테이너 가상화 기술의 개념부터 시작해, 도커 기반 애플리케이션 배포와 이미지 생성, 네트워크 구성, 오케스트레이션 시스템 쿠버네티스까지 단계별로 익힐 수 있도록 구성되었다. 초판 출간 이후 변화한 최신 생태계를 반영해 전면 개정/증보되었으며, 컨테이너 개발 경험이 풍부한 저자의 노하우와 현업 사례를 담았기에 초보자부터 중급자까지 모두에게 유용하다.
저자

야마다 아키노리

주식회사 사이버 에이전트 소속. 라이브 스트리밍 서비스를 개발하며 개발자 생산성 팀의 총괄을 맡았다. 조직 전반의 개발 생산성 향상, 비용 절감, 품질 보증 등을 위한 서비스 개발을 지원하고 있다. 컨테이너를 활용한 개발과 소프트웨어 딜리버리에 정통하다.

목차

옮긴이 머리말 xiii
베타리더 후기 xiv
시작하며 xvi
감사의 글 xviii

CHAPTER 1 컨테이너와 도커 기초 1
1.1 컨테이너란? 1
__1.1.1 컨테이너형 가상화 2
__1.1.2 컨테이너 사용 사례 3
COLUMN 컨테이너의 단점 5
1.2 도커란? 5
__1.2.1 도커와 Docker, Inc.의 역사 6
__1.2.2 애플리케이션 배포에 초점을 맞춘 도커 7
__1.2.3 도커 접하기 8
COLUMN Moby 프로젝트 11
1.3 컨테이너를 사용하는 이유 11
__1.3.1 불변하는 애플리케이션과 실행 환경에 의한 재현성 확보 12
COLUMN 클라우드의 IaC와 Immutable Infrastructure 15
COLUMN 컨테이너 기술과 서버리스 플랫폼 16
__1.3.2 애플리케이션 구성 관리의 용이성 16
__1.3.3 환경과 상관없이 실행 가능한 높은 이식성 18
__1.3.4 컨테이너 기반 개발의 효율성 20
1.4 로컬 컨테이너 실행 환경 구축 20
__1.4.1 도커 데스크톱 설치 21
COLUMN ARM 아키텍처 24
__1.4.2 도커 데스크톱 설정 25
__1.4.3 도커 데스크톱 트러블슈팅 30
COLUMN Linux 환경 설치 32
COLUMN 도커의 구독 플랜 32

CHAPTER 2 컨테이너 배포 33
2.1 컨테이너로 애플리케이션 실행하기 33
__2.1.1 컨테이너 이미지와 컨테이너의 기초 34
2.2 간단한 애플리케이션과 컨테이너 이미지 만들기 37
__2.2.1 Dockerfile의 인스트럭션 39
COLUMN CMD 실행 시 덮어쓰기 40
COLUMN ENTRYPOINT로 커맨드 실행하는 방법 알아보기 42
COLUMN Dockerfile의 다른 인스트럭션 44
COLUMN CMD의 지정 방식 45
__2.2.2 컨테이너 실행하기 45
COLUMN 짧은 도커 커맨드 46
2.3 이미지 다루기 48
__2.3.1 docker image build - 이미지 빌드 50
__2.3.2 docker search - 이미지 검색 54
__2.3.3 docker image pull - 이미지 가져오기 56
__2.3.4 docker image ls - 이미지 리스트 57
__2.3.5 docker image tag - 이미지 태그 57
__2.3.6 docker login - 컨테이너 레지스트리 로그인 60
__2.3.7 docker image push - 이미지 공개 64
COLUMN GHCR에 컨테이너 이미지 공개하기 67
2.4 컨테이너 다루기 67
__2.4.1 컨테이너의 라이프 사이클 68
__2.4.2 docker container run - 컨테이너 생성과 실행 69
COLUMN 커맨드 실행 시 자주 사용되는 옵션 71
__2.4.3 docker container ls - 컨테이너 리스트 72
__2.4.4 docker container stop - 컨테이너 중지 74
__2.4.5 docker container rm - 컨테이너 파기 74
__2.4.6 docker container logs - 로그(표준 스트림 출력) 확인하기 76
__2.4.7 docker container exec - 실행 중인 컨테이너에서 커맨드 실행 77
__2.4.8 docker container cp - 파일 복사 78
2.5 운영 관리를 위한 커맨드 79
__2.5.1 prune - 파기 79
__2.5.2 docker container stats - 사용 상태 가져오기 80
2.6 도커 컴포즈 81
__2.6.1 도커 컴포즈를 사용한 단일 컨테이너 실행 81
__2.6.2 컴포즈를 사용해 여러 컨테이너 실행하기 84

CHAPTER 3 실용적인 컨테이너의 구축과 배포 93
3.1 애플리케이션과 컨테이너의 구성 93
__3.1.1 하나의 컨테이너 = 하나의 프로세스? 95
__3.1.2 하나의 컨테이너에 하나의 관심사 98
3.2 컨테이너의 이식성 100
__3.2.1 커널 및 아키텍처와의 차이 100
COLUMN Windows에서 동작하는 컨테이너 101
__3.2.2 라이브러리, 동적 링크 101
3.3 컨테이너 친화적인 애플리케이션 102
__3.3.1 설정 파일을 포함하여 이미지 빌드하기 103
__3.3.2 컨테이너 외부의 설정 파일 사용하기 103
COLUMN 컨테이너 친화적인 프로덕트만 있는 것은 아니다. 107
3.4 보안 정보를 다루는 방법 107
__3.4.1 보안 정보를 받는 컨테이너 107
__3.4.2 버전 관리 시스템과 보안 정보 관리의 어려움 108
__3.4.3 시크릿을 사용한 보안 정보 관리 109
COLUMN 소프트웨어 공급망 공격 111
__3.4.4 완벽한 대책은 존재하지 않는다 111
3.5 영속성 데이터의 사용 방법 112
__3.5.1 Data Volume 112
__3.5.2 Data Volume 컨테이너 114

CHAPTER 4 여러 컨테이너의 구성을 통한 애플리케이션 구축 119
4.1 웹 애플리케이션 구성 119
__4.1.1 애플리케이션 스펙 120
__4.1.2 아키텍처 120
4.2 MySQL 구축 123
__4.2.1 MySQL에 접속하는 유저의 비밀번호 생성하기 124
__4.2.2 MySQL 컨테이너 추가 설정하기 125
__4.2.3 MySQL의 Dockerfile 126
__4.2.4 MySQL 컨테이너의 구성 설정하기 126
4.3 데이터베이스 마이그레이터 구축 128
__4.3.1 golang-migrate로 데이터베이스 마이그레이션하기 128
__4.3.2 마이그레이션 실행 스크립트 131
__4.3.3 데이터베이스 마이그레이터의 Dockerfile 132
COLUMN .dockerignore 파일 134
__4.3.4 데이터베이스 마이그레이터 컨테이너의 구성 설정하기 134
4.4 API 서버와 웹서버 구축 139
__4.4.1 리포지터리 디렉터리 구성 140
COLUMN 폴리레포와 모노레포 142
__4.4.2 실행 파일과 커맨드 상세 142
__4.4.3 API 서버의 구축 144
__4.4.4 웹서버 구축 151
4.5 리버스 프록시 구축 158
__4.5.1 nginx 컨테이너의 템플릿 구조 159
COLUMN entrykit 163
__4.5.2 Dockerfile 163
4.6 여러 컨테이너를 구성하여 작업 관리 앱 실행하기 164
__4.6.1 compose.yaml 164
__4.6.2 작업 관리 앱 실행하기 170
4.7 Tilt로 여러 컨테이너 구성을 통한 개발 경험 향상 171
__4.7.1 Tilt 실행 171
__4.7.2 Tilt의 강력한 기능 172
4.8 컨테이너 오케스트레이션 기초 정리 176

CHAPTER 5 쿠버네티스 입문 177
5.1 쿠버네티스란? 178
__5.1.1 도커의 번성과 쿠버네티스의 탄생 178
__5.1.2 쿠버네티스의 위상 179
5.2 로컬 환경에서 쿠버네티스 실행하기 181
__5.2.1 도커 데스크톱에서 로컬 쿠버네티스 환경 구축하기 181
COLUMN 다른 쿠버네티스 구축 도구 187
5.3 쿠버네티스 개요 187
5.4 쿠버네티스 클러스터와 노드 188
COLUMN 컨트롤 플레인을 구성하는 관리 컴포넌트 190
5.5 네임스페이스 191
5.6 파드 192
__5.6.1 파드 생성하고 배포하기 193
__5.6.2 파드 조작하기 195
COLUMN 파드와 파드 내부 컨테이너의 주소 197
5.7 레플리카셋 197
5.8 디플로이먼트 199
__5.8.1 레플리카셋 라이프 사이클 202
__5.8.2 롤백 실행하기 204
5.9 서비스 205
__5.9.1 레이블 셀렉터를 사용한 트래픽 라우팅 208
COLUMN 서비스의 이름 분석 211
__5.9.2 ClusterIP 서비스 211
__5.9.3 Headless 서비스 211
__5.9.4 NodePort 서비스 213
__5.9.5 LoadBalancer 서비스 214
__5.9.6 ExternalName 서비스 214
5.10 인그레스 215
__5.10.1 인그레스 컨트롤러와 인그레스 클래스 215
__5.10.2 인그레스를 통한 액세스 216
COLUMN kubectl로 리소스 타입과 리소스명을 지정하는 방법 221
COLUMN Tilt로 매니페스트 파일의 업데이트를 감지하고, 자동으로 리소스 업데이트하기 222
COLUMN kk9s 223
COLUMN 쿠버네티스 API 224

CHAPTER 6 쿠버네티스 배포와 클러스터 구축 226
6.1 작업 관리 앱 구성 226
__6.1.1 작업 관리 앱을 구성하는 쿠버네티스 리소스 227
6.2 작업 관리 앱을 쿠버네티스에 배포하기 227
__6.2.1 네임스페이스 228
__6.2.2 시크릿 228
__6.2.3 MySQL 배포 232
COLUMN 스테이트풀셋의 serviceName 237
__6.2.4 데이터베이스 마이그레이터 배포 238
__6.2.5 API 서버 배포 241
__6.2.6 웹서버 배포 245
6.3 쿠버네티스 애플리케이션 온라인에 공개하기 251
__6.3.1 Azure Kubernetes Service 배포 251
COLUMN 자체 도메인과 HTTPS로 애플리케이션

출판사 서평

따라 하며 익히는 컨테이너 기술 실전 입문서

날마다 바뀌는 소프트웨어 개발 환경 속에서 컨테이너 기술은 선택이 아닌 필수 기술로 자리 잡았으며, 도커와 쿠버네티스는 이제 개발자라면 누구나 이해해야 할 핵심 도구다. 프런트엔드와 백엔드, 인프라, DevOps를 아우르는 전방위적 수요는 모든 개발자에게 컨테이너 기술을 요구하고 있다.
이 책은 도커와 쿠버네티스를 중심으로 컨테이너 기술을 단계적으로 익힐 수 있도록 구성되어 있다. 단순한 개념 나열이 아닌, 실습 중심의 예제와 구성으로 초보자도 실제 업무에 곧바로 적용할 수 있는 실전 감각을 기를 수 있다. 이미지 빌드, 다중 컨테이너 구성, 쿠버네티스를 통한 오케스트레이션 전략까지, 실무에 꼭 필요한 기술들을 풍부하게 담았다.
이번 개정신판은 변화한 최신 생태계를 반영하여 내용을 전면 수정·보완하였으며, 저자의 실무 경험과 기술적 통찰이 더해져 더욱 깊이 있고 실용적인 지침서를 완성했다. 개념 학습을 넘어 개발과 운영에 필요한 사고방식을 형성하고, 실무에 컨테이너 기술을 적용할 수 있을 것이다.
초보자부터 실무자까지, 컨테이너 기술을 제대로 배우고 싶은 모든 개발자를 위한 친절하고도 실질적인 가이드다. 이 책과 함께 컨테이너 기술 여정의 첫걸음을 내디뎌보자!

주요 내용
● 컨테이너와 도커의 개념, 구조, 실행 원리
● 도커 이미지 빌드와 실행, 포트포워딩 실습
● 컴포즈를 이용한 다중 컨테이너 구성 및 실행
● 컨테이너 간 네트워크 연동과 마운트, 시크릿 관리
● 도커 기반 웹 애플리케이션과 API 서버 구축
● 실전 MySQL 데이터 스토어와 마이그레이터 컨테이너 설정
● 쿠버네티스를 통한 고가용성 운영 및 스케일링 전략
● 운영 환경에서의 보안 설정, 볼륨, 로그 수집 등 실무 기술