로그인
비회원
카테고리
사전
경제/경영
문학
만화
대학교재
과학
가정/건강/생활
정치/사회
어린이
여행/지도
역사/문화
예술/대중문화
외국도서
외국어/어학
유아
인문
인물
잡지
종교
청소년
취미/레저
컴퓨터/IT
수험서/자격증
학술도서
기술/공학
초등참고서
중/고등참고서
베스트셀러
화제의신간
저자채널
북팡
주요서비스
북포스트
북스크린
이벤트/기획
공지사항
1:1문의
고객센터
장바구니 담기
close
장바구니
에 상품을 담았습니다.
장바구니로
계속쇼핑하기
도서상세
무료배송
예약도서
소득공제
처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 (개정신판)
야마다 아키노리
☆☆☆☆☆
평점(
0
/5) | 리뷰(
0
)
제이펍 | 2025-05-29 출간
판매가
40,000
원
즉시할인가
[10% 할인]
36,000
원
적립금
적립5%
2,000
원
배송비
무료배송
예약도서
05월 29일 출고예정
네이버페이 적립
2%
적립
카드할인
0%할인
0
원
대상카드
삼성/신한/현대/BC/KB국민/롯데/하나(외환)/하나/NH채움/우리/씨티/수협/광주/제주/전북
구성도서
상품정보
책 소개
목차
옮긴이 머리말 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로 애플리케이션 공개하기 257
COLUMN kubectx 259
CHAPTER 7 쿠버네티스 활용 260
7.1 파드 배포 전략 260
__7.1.1 RollingUpdate 261
COLUMN 리소스의 일부를 업데이트하는 kubectl patch 커맨드 266
__7.1.2 컨테이너 실행 시 상태 체크 설정하기 268
COLUMN 안전하게 애플리케이션을 중지하고 파드 삭제하기 271
__7.1.3 Blue-Green Deployment 272
COLUMN 서비스 메시를 구현하는 프로덕트 277
7.2 쿠버네티스에서 정기적인 배치 작업 실행하기 278
__7.2.1 크론잡 278
__7.2.2 타임존을 고려한 크론잡 실행 284
__7.2.3 크론잡에서 잡을 일회성으로 실행하기 284
7.3 유저 관리와 Role-Based Access Control(RBAC) 285
__7.3.1 RBAC를 사용해 권한 제어 구현하기 286
__7.3.2 클러스터 롤 생성 288
__7.3.3 서비스 어카운트 생성 290
__7.3.4 클러스터 롤 바인딩 생성 291
__7.3.5 일반 유저 294
CHAPTER 8 쿠버네티스 애플리케이션 패키징 299
8.1 Kustomize 300
__8.1.1 기본적인 사용 방법 301
COLUMN 권장하지 않는 commonLabels 309
__8.1.2 재사용과 부분 오버레이 310
__8.1.3 Kustomize에서 시크릿 다루기 315
__8.1.4 네트워크를 경유해서 매니페스트 생성하기 321
8.2 Helm 323
__8.2.1 Helm 설치 324
__8.2.2 Helm Chart와 리포지터리 325
__8.2.3 Chart 설치하기 328
__8.2.4 자체 Chart 생성하기 332
COLUMN 쿠버네티스의 권장 레이블 347
__8.2.5 Chart를 레지스트리에 등록하기 347
COLUMN GHCR의 패키지와 리포지터리 연결하기 351
COLUMN Open Container Initiative(OCI) 353
CHAPTER 9 컨테이너 운영 354
9.1 로그 운영 354
__9.1.1 컨테이너 로그 354
__9.1.2 컨테이너 로그 운영 358
__9.1.3 Elastic Stack에 의한 로그 수집, 관리 구성의 구축 360
COLUMN 안정화된 Elasticsearch 선택하기 384
COLUMN 클라우드의 자체 로그 관리 385
__9.1.4 stern 385
9.2 가용성이 높은 쿠버네티스 운영 387
__9.2.1 노드 장애 시 쿠버네티스 동작 387
__9.2.2 Pod AntiAffinity를 통해 장애 저항성이 뛰어난 파드 배포 전략 388
__9.2.3 CPU를 많이 사용하는 파드를 Node Affinity로 분리하기 394
__9.2.4 Horizontal Pod Autoscaler를 사용한 파드의 오토스케일 399
__9.2.5 Cluster Autoscaler를 사용한 노드의 오토 스케일 401
COLUMN 쿠버네티스 클러스터와 노드 운영을 가볍게 하는 구조 402
CHAPTER 10 최적의 컨테이너 이미지 생성과 운영 403
10.1 운영에 최적인 컨테이너 이미지란? 403
__10.1.1 이미지 사이즈 증가로 인해 발생하는 문제 404
10.2 경량 베이스 이미지 404
__10.2.1 scratch 405
__10.2.2 BusyBox 411
__10.2.3 Alpine Linux 415
COLUMN Alpine Linux 베이스 이미지의 사용 여부 417
__10.2.4 Distroless 418
10.3 경량 컨테이너 이미지 생성하기 423
__10.3.1 배포하는 애플리케이션의 사이즈 줄이기 423
__10.3.2 컨테이너 이미지의 레이어 구조 의식하기 424
10.4 Multi-stage builds 428
__10.4.1 빌드 컨테이너와 실행 컨테이너 나누기 429
COLUMN 외부 이미지를 스테이지로 사용하기 432
10.5 BuildKit 433
__10.5.1 BuildKit이란? 433
__10.5.2 컨테이너의 멀티 플랫폼 대응 433
__10.5.3 BuildKit으로 멀티 플랫폼에 대응하는 이미지 빌드하기 435
COLUMN QEMU 436
COLUMN 멀티 플랫폼 이미지는 어디까지 대응해야 할까? 441
10.6 안전한 컨테이너 이미지의 사용과 생성 441
__10.6.1 컨테이너 이미지를 최소한으로 구성하기 442
__10.6.2 권한 모드로 실행 피하기 442
__10.6.3 root 유저로 실행 피하기 442
__10.6.4 신뢰할 수 있는 컨테이너 이미지와 도구 사용하기 446
__10.6.5 Trivy로 컨테이너 이미지 취약성 체크하기 448
10.7 CI 도구로 컨테이너 이미지 빌드하기 451
__10.7.1 GitHub Actions 452
__10.7.2 템플릿에서 리포지터리 생성하기 453
__10.7.3 워크플로 설정 455
__10.7.4 워크플로 실행 460
COLUMN 운영에서는 latest 이미지 태그 피하기 464
CHAPTER 11 컨테이너의 지속적 전달 465
11.1 지속적 전달이란? 465
__11.1.1 다듬어지지 않은 배포 프로세스가 일으키는 문제 465
__11.1.2 소프트웨어 전달의 중요성과 CI/CD 구분 466
__11.1.3 GitOps 방식의 지속적 전달 467
11.2 Flux 469
__11.2.1 Flux 설치 469
__11.2.2 애플리케이션 배포 470
11.3 Argo CD 475
__11.3.1 Argo CD 설치 475
__11.3.2 애플리케이션 배포 478
11.4 PipeCD 484
__11.4.1 PipeCD의 특징 484
__11.4.2 퀵 스타트 환경 구축 485
__11.4.3 애플리케이션 배포 489
COLUMN PipeCD에서 Control Plane과 Piped를 각각 구축하는 이유 493
11.5 소프트웨어 전달의 완전 자동화 495
__11.5.1 매니페스트로 정의하는 컨테이너 이미지 태그를 자동 업데이트하기 495
COLUMN GitOps에 승인 프로세스 넣기 507
CHAPTER 12 컨테이너의 다양한 활용 방법 508
12.1 팀 개발에서 개발 환경을 통일하고 공유하기 508
__12.1.1 사용하는 소프트웨어와 도구 통일하기 508
__12.1.2 개발 환경과 집단 지성 510
COLUMN 컨테이너가 Vagrant를 대체할 수 있을까? 511
12.2 커맨드 라인 도구를 컨테이너에서 사용하기 512
__12.2.1 Trivy를 컨테이너에서 실행하기 512
__12.2.2 셸 스크립트를 컨테이너에서 실행하기 515
12.3 부하 테스트 517
__12.3.1 Locust 개요 517
__12.3.2 쿠버네티스에서 애플리케이션의 부하 테스트 518
COLUMN k6에서 부하 테스트 실행 526
APPENDIX A 개발 도구 셋업 528
A.1 WSL2 528
__A.1.1 WSL2의 조건 529
__A.1.2 WSL2의 설치 529
__A.1.3 WSL2로 사용할 수 있는 배포판 530
__A.1.4 make 설치 531
COLUMN WSL2를 사용하는 개발 스타일 정착 532
A.2 asdf 532
__A.2.1 asdf란? 533
__A.2.2 asdf 설치 533
__A.2.3 도구 설치 534
__A.2.4 사용하는 버전 설정 534
A.3 kind 535
__A.3.1 kind 설치 536
__A.3.2 멀티 노드의 쿠버네티스 클러스터를 로컬 환경에 구축하기 536
COLUMN Docker in Docker / Container in Container 538
A.4 Rancher Desktop 538
APPENDIX B 다양한 컨테이너 오케스트레이션 환경 542
B.1 Google Kubernetes Engine 542
__B.1.1 GKE 클러스터의 구축 준비 543
__B.1.2 GKE 클러스터 구축 545
B.2 Amazon Elastic Kubernetes Service 548
__B.2.1 EKS 클러스터 구축 준비 548
__B.2.2 eksctl을 사용해 EKS 클러스터 구축 550
COLUMN EKS on Fargate 555
B.3 Azure Kubernetes Service 556
__B.3.1 AKS 클러스터의 구축 준비 557
__B.3.2 AKS 클러스터 구축 559
__B.3.3 AKS 클러스터 조작 560
B.4 온프레미스 환경에서 쿠버네티스 클러스터 구축 561
__B.4.1 온프레미스 클러스터 구축 준비 561
__B.4.2 kubespray를 사용해 EKS 클러스터 구축 563
B.5 Amazon Elastic Container Service 566
__B.5.1 CDK로 ECS 클러스터 생성과 컨테이너 배포 정의하기 567
__B.5.2 CDK로 ECS 클러스터를 생성하고 컨테이너 배포하기 569
COLUMN Amazon ECS Anywhere 571
APPENDIX C 컨테이너 개발과 운영 팁 572
C.1 컨테이너 런타임 572
__C.1.1 containerd 573
COLUMN 쿠버네티스의 도커 deprecated 소동 574
C.1.2 nerdctl 574
C.2 쿠버네티스 팁 575
__C.2.1 이페머럴 컨테이너를 통한 기존 파드 디버깅 575
__C.2.2 Pod Security Admission을 사용한 보안 강화 578
COLUMN Open Policy Agent 581
C.3 컨테이너 개발, 배포 팁 581
__C.3.1 Compose Watch로 컨테이너 자동 업데이트하기 581
__C.3.2 Tilt로 쿠버네티스 애플리케이션 다루기 583
C.4 생성형 AI를 활용한 컨테이너 개발 효율화 585
__C.4.1 ChatGPT 활용하기 586
__C.4.2 GitHub Copilot 활용하기 587
C.5 Alpine Linux 패키지 매니저 apk 589
__C.5.1 패키지 매니저 apk 조작하기 589
__C.5.2 alpine-sdk 패키지 592
참고 문헌 593
찾아보기 595
회원리뷰
책제원정보
ISBN
9791194587279
판형정보
624쪽 / 188 X 245 X 30mm
출판사
제이펍
출판일
2025-05-29 출간
교환 및 환불안내
도서 교환 및 환불
ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.
(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
경기도 파주시 광인사길 193 / (주)북채널 / 전화 : 1800-7327
택배안내 : CJ대한통운(1588-1255)
고객님의 변심으로 인한 교환 또는 반품시에는 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.
네이버페이
구매하기
옵션을 선택해주세요
추가상품
상품선택
독서대
7,900원
독서대 선택안함
0원
선택된 상품
처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 (개정신판)
36,000원
총 주문금액
36,000
원
장바구니
구매하기