{"product_id":"138196","title":"처음부터 제대로 배우는 도커\/쿠버네티스 컨테이너 개발과 운영","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPB8rkhwi0xfR3Jg8hV3fsfDUNCF.png?v=1765061115\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\n\u003cdiv style=\"width:95%\"\u003e\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e처음부터 제대로 배우는 도커\/쿠버네티스 컨테이너 개발과 운영\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/146355057\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eDescription\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책소개\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e실전 애플리케이션 개발과 운영을 위한 도커\/쿠버네티스 컨테이너 기술 완벽 해설서 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e도커와 쿠버네티스를 활용한 컨테이너 기술의 핵심을 집대성한 실전 입문서다.\u003cbr\u003e컨테이너 가상화 기술의 개념부터 시작해, 도커 기반 애플리케이션 배포와 이미지 생성, 네트워크 구성, 오케스트레이션 시스템 쿠버네티스까지 단계별로 익힐 수 있도록 구성되었다.\u003cbr\u003e초판 출간 이후 변화한 최신 생태계를 반영해 전면 개정\/증보되었으며, 컨테이너 개발 경험이 풍부한 저자의 노하우와 현업 사례를 담았기에 초보자부터 중급자까지 모두에게 유용하다.\u003cbr\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cul\u003e \u003cli\u003e 책의 일부 내용을 미리 읽어보실 수 있습니다.\u003cbr\u003e\u003cspan\u003e미리보기\u003c\/span\u003e\n\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e목차\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  옮긴이 머리말 xiii\u003cbr\u003e베타리더 후기 xiv\u003cbr\u003e시작하며 xvi\u003cbr\u003e감사의 글 xviii\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 1 컨테이너와 도커 기초 1\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e1.1 컨테이너란? 1\u003cbr\u003e__1.1.1 컨테이너형 가상화 2 \u003cbr\u003e__1.1.2 컨테이너 사용 사례 3\u003cbr\u003eCOLUMN 컨테이너의 단점 5\u003cbr\u003e1.2 도커란? 5\u003cbr\u003e__1.2.1 도커와 Docker, Inc.의 역사 6 \u003cbr\u003e__1.2.2 애플리케이션 배포에 초점을 맞춘 도커 7\u003cbr\u003e__1.2.3 도커 접하기 8\u003cbr\u003eCOLUMN Moby 프로젝트 11\u003cbr\u003e1.3 컨테이너를 사용하는 이유 11\u003cbr\u003e__1.3.1 불변하는 애플리케이션과 실행 환경에 의한 재현성 확보 12\u003cbr\u003eCOLUMN 클라우드의 IaC와 Immutable Infrastructure 15\u003cbr\u003eCOLUMN 컨테이너 기술과 서버리스 플랫폼 16\u003cbr\u003e__1.3.2 애플리케이션 구성 관리의 용이성 16\u003cbr\u003e__1.3.3 환경과 상관없이 실행 가능한 높은 이식성 18\u003cbr\u003e__1.3.4 컨테이너 기반 개발의 효율성 20\u003cbr\u003e1.4 로컬 컨테이너 실행 환경 구축 20\u003cbr\u003e__1.4.1 도커 데스크톱 설치 21\u003cbr\u003eCOLUMN ARM 아키텍처 24\u003cbr\u003e__1.4.2 도커 데스크톱 설정 25\u003cbr\u003e__1.4.3 도커 데스크톱 트러블슈팅 30\u003cbr\u003eCOLUMN Linux 환경 설치 32 \u003cbr\u003eCOLUMN 도커의 구독 플랜 32\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 2 컨테이너 배포 33\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e2.1 컨테이너로 애플리케이션 실행하기 33\u003cbr\u003e__2.1.1 컨테이너 이미지와 컨테이너의 기초 34\u003cbr\u003e2.2 간단한 애플리케이션과 컨테이너 이미지 만들기 37\u003cbr\u003e__2.2.1 Dockerfile의 인스트럭션 39\u003cbr\u003eCOLUMN CMD 실행 시 덮어쓰기 40\u003cbr\u003eCOLUMN ENTRYPOINT로 커맨드 실행하는 방법 알아보기 42\u003cbr\u003eCOLUMN Dockerfile의 다른 인스트럭션 44 \u003cbr\u003eCOLUMN CMD의 지정 방식 45\u003cbr\u003e__2.2.2 컨테이너 실행하기 45\u003cbr\u003eCOLUMN 짧은 도커 커맨드 46\u003cbr\u003e2.3 이미지 다루기 48\u003cbr\u003e__2.3.1 docker image build ― 이미지 빌드 50\u003cbr\u003e__2.3.2 docker search ― 이미지 검색 54\u003cbr\u003e__2.3.3 docker image pull ― 이미지 가져오기 56\u003cbr\u003e__2.3.4 docker image ls ― 이미지 리스트 57\u003cbr\u003e__2.3.5 docker image tag ― 이미지 태그 57\u003cbr\u003e__2.3.6 docker login ― 컨테이너 레지스트리 로그인 60\u003cbr\u003e__2.3.7 docker image push ― 이미지 공개 64\u003cbr\u003eCOLUMN GHCR에 컨테이너 이미지 공개하기 67\u003cbr\u003e2.4 컨테이너 다루기 67\u003cbr\u003e__2.4.1 컨테이너의 라이프 사이클 68\u003cbr\u003e__2.4.2 docker container run ― 컨테이너 생성과 실행 69\u003cbr\u003eCOLUMN 커맨드 실행 시 자주 사용되는 옵션 71\u003cbr\u003e__2.4.3 docker container ls ― 컨테이너 리스트 72\u003cbr\u003e__2.4.4 docker container stop ― 컨테이너 중지 74\u003cbr\u003e__2.4.5 docker container rm ― 컨테이너 파기 74\u003cbr\u003e__2.4.6 docker container logs ― 로그(표준 스트림 출력) 확인하기 76\u003cbr\u003e__2.4.7 docker container exec ― 실행 중인 컨테이너에서 커맨드 실행 77\u003cbr\u003e__2.4.8 docker container cp ― 파일 복사 78\u003cbr\u003e2.5 운영 관리를 위한 커맨드 79\u003cbr\u003e__2.5.1 prune ― 파기 79 \u003cbr\u003e__2.5.2 docker container stats ― 사용 상태 가져오기 80\u003cbr\u003e2.6 도커 컴포즈 81\u003cbr\u003e__2.6.1 도커 컴포즈를 사용한 단일 컨테이너 실행 81\u003cbr\u003e__2.6.2 컴포즈를 사용해 여러 컨테이너 실행하기 84\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 3 실용적인 컨테이너의 구축과 배포 93\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e3.1 애플리케이션과 컨테이너의 구성 93\u003cbr\u003e__3.1.1 하나의 컨테이너 = 하나의 프로세스? 95 \u003cbr\u003e__3.1.2 하나의 컨테이너에 하나의 관심사 98\u003cbr\u003e3.2 컨테이너의 이식성 100\u003cbr\u003e__3.2.1 커널 및 아키텍처와의 차이 100\u003cbr\u003eCOLUMN Windows에서 동작하는 컨테이너 101\u003cbr\u003e__3.2.2 라이브러리, 동적 링크 101\u003cbr\u003e3.3 컨테이너 친화적인 애플리케이션 102\u003cbr\u003e__3.3.1 설정 파일을 포함하여 이미지 빌드하기 103\u003cbr\u003e__3.3.2 컨테이너 외부의 설정 파일 사용하기 103\u003cbr\u003eCOLUMN 컨테이너 친화적인 프로덕트만 있는 것은 아니다.\u003cbr\u003e107\u003cbr\u003e3.4 보안 정보를 다루는 방법 107\u003cbr\u003e__3.4.1 보안 정보를 받는 컨테이너 107\u003cbr\u003e__3.4.2 버전 관리 시스템과 보안 정보 관리의 어려움 108\u003cbr\u003e__3.4.3 시크릿을 사용한 보안 정보 관리 109\u003cbr\u003eCOLUMN 소프트웨어 공급망 공격 111\u003cbr\u003e__3.4.4 완벽한 대책은 존재하지 않는다 111\u003cbr\u003e3.5 영속성 데이터의 사용 방법 112\u003cbr\u003e__3.5.1 Data Volume 112 \u003cbr\u003e__3.5.2 Data Volume 컨테이너 114\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 4 여러 컨테이너의 구성을 통한 애플리케이션 구축 119\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e4.1 웹 애플리케이션 구성 119\u003cbr\u003e__4.1.1 애플리케이션 스펙 120 \u003cbr\u003e__4.1.2 아키텍처 120\u003cbr\u003e4.2 MySQL 구축 123\u003cbr\u003e__4.2.1 MySQL에 접속하는 유저의 비밀번호 생성하기 124\u003cbr\u003e__4.2.2 MySQL 컨테이너 추가 설정하기 125 \u003cbr\u003e__4.2.3 MySQL의 Dockerfile 126\u003cbr\u003e__4.2.4 MySQL 컨테이너의 구성 설정하기 126\u003cbr\u003e4.3 데이터베이스 마이그레이터 구축 128\u003cbr\u003e__4.3.1 golang-migrate로 데이터베이스 마이그레이션하기 128\u003cbr\u003e__4.3.2 마이그레이션 실행 스크립트 131\u003cbr\u003e__4.3.3 데이터베이스 마이그레이터의 Dockerfile 132\u003cbr\u003eCOLUMN .dockerignore 파일 134\u003cbr\u003e__4.3.4 데이터베이스 마이그레이터 컨테이너의 구성 설정하기 134\u003cbr\u003e4.4 API 서버와 웹서버 구축 139\u003cbr\u003e__4.4.1 리포지터리 디렉터리 구성 140\u003cbr\u003eCOLUMN 폴리레포와 모노레포 142\u003cbr\u003e__4.4.2 실행 파일과 커맨드 상세 142\u003cbr\u003e__4.4.3 API 서버의 구축 144 \u003cbr\u003e__4.4.4 웹서버 구축 151\u003cbr\u003e4.5 리버스 프록시 구축 158\u003cbr\u003e__4.5.1 nginx 컨테이너의 템플릿 구조 159\u003cbr\u003eCOLUMN entrykit 163\u003cbr\u003e__4.5.2 Dockerfile 163\u003cbr\u003e4.6 여러 컨테이너를 구성하여 작업 관리 앱 실행하기 164\u003cbr\u003e__4.6.1 compose.yaml 164 \u003cbr\u003e__4.6.2 작업 관리 앱 실행하기 170\u003cbr\u003e4.7 Tilt로 여러 컨테이너 구성을 통한 개발 경험 향상 171\u003cbr\u003e__4.7.1 Tilt 실행 171 \u003cbr\u003e__4.7.2 Tilt의 강력한 기능 172\u003cbr\u003e4.8 컨테이너 오케스트레이션 기초 정리 176\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 5 쿠버네티스 입문 177\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e5.1 쿠버네티스란? 178\u003cbr\u003e__5.1.1 도커의 번성과 쿠버네티스의 탄생 178 \u003cbr\u003e__5.1.2 쿠버네티스의 위상 179\u003cbr\u003e5.2 로컬 환경에서 쿠버네티스 실행하기 181\u003cbr\u003e__5.2.1 도커 데스크톱에서 로컬 쿠버네티스 환경 구축하기 181\u003cbr\u003eCOLUMN 다른 쿠버네티스 구축 도구 187\u003cbr\u003e5.3 쿠버네티스 개요 187\u003cbr\u003e5.4 쿠버네티스 클러스터와 노드 188\u003cbr\u003eCOLUMN 컨트롤 플레인을 구성하는 관리 컴포넌트 190\u003cbr\u003e5.5 네임스페이스 191\u003cbr\u003e5.6 파드 192\u003cbr\u003e__5.6.1 파드 생성하고 배포하기 193\u003cbr\u003e__5.6.2 파드 조작하기 195\u003cbr\u003eCOLUMN 파드와 파드 내부 컨테이너의 주소 197\u003cbr\u003e5.7 레플리카셋 197\u003cbr\u003e5.8 디플로이먼트 199\u003cbr\u003e__5.8.1 레플리카셋 라이프 사이클 202 \u003cbr\u003e__5.8.2 롤백 실행하기 204\u003cbr\u003e5.9 서비스 205\u003cbr\u003e__5.9.1 레이블 셀렉터를 사용한 트래픽 라우팅 208\u003cbr\u003eCOLUMN 서비스의 이름 분석 211\u003cbr\u003e__5.9.2 ClusterIP 서비스 211\u003cbr\u003e__5.9.3 Headless 서비스 211\u003cbr\u003e__5.9.4 NodePort 서비스 213 \u003cbr\u003e__5.9.5 LoadBalancer 서비스 214\u003cbr\u003e__5.9.6 ExternalName 서비스 214\u003cbr\u003e5.10 인그레스 215\u003cbr\u003e__5.10.1 인그레스 컨트롤러와 인그레스 클래스 215\u003cbr\u003e__5.10.2 인그레스를 통한 액세스 216\u003cbr\u003eCOLUMN kubectl로 리소스 타입과 리소스명을 지정하는 방법 221\u003cbr\u003eCOLUMN Tilt로 매니페스트 파일의 업데이트를 감지하고, 자동으로 리소스 업데이트하기 222\u003cbr\u003eCOLUMN kk9s 223 \u003cbr\u003eCOLUMN 쿠버네티스 API 224\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 6 쿠버네티스 배포와 클러스터 구축 226\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e6.1 작업 관리 앱 구성 226\u003cbr\u003e__6.1.1 작업 관리 앱을 구성하는 쿠버네티스 리소스 227\u003cbr\u003e6.2 작업 관리 앱을 쿠버네티스에 배포하기 227\u003cbr\u003e__6.2.1 네임스페이스 228 \u003cbr\u003e__6.2.2 시크릿 228\u003cbr\u003e__6.2.3 MySQL 배포 232\u003cbr\u003eCOLUMN 스테이트풀셋의 serviceName 237\u003cbr\u003e__6.2.4 데이터베이스 마이그레이터 배포 238\u003cbr\u003e__6.2.5 API 서버 배포 241 \u003cbr\u003e__6.2.6 웹서버 배포 245\u003cbr\u003e6.3 쿠버네티스 애플리케이션 온라인에 공개하기 251\u003cbr\u003e__6.3.1 Azure Kubernetes Service 배포 251\u003cbr\u003eCOLUMN 자체 도메인과 HTTPS로 애플리케이션 공개하기 257 \u003cbr\u003eCOLUMN kubectx 259\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 7 쿠버네티스 활용 260\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e7.1 파드 배포 전략 260\u003cbr\u003e__7.1.1 RollingUpdate 261\u003cbr\u003eCOLUMN 리소스의 일부를 업데이트하는 kubectl patch 커맨드 266\u003cbr\u003e__7.1.2 컨테이너 실행 시 상태 체크 설정하기 268\u003cbr\u003eCOLUMN 안전하게 애플리케이션을 중지하고 파드 삭제하기 271\u003cbr\u003e__7.1.3 Blue-Green Deployment 272\u003cbr\u003eCOLUMN 서비스 메시를 구현하는 프로덕트 277\u003cbr\u003e7.2 쿠버네티스에서 정기적인 배치 작업 실행하기 278\u003cbr\u003e__7.2.1 크론잡 278 \u003cbr\u003e__7.2.2 타임존을 고려한 크론잡 실행 284\u003cbr\u003e__7.2.3 크론잡에서 잡을 일회성으로 실행하기 284\u003cbr\u003e7.3 유저 관리와 Role-Based Access Control(RBAC) 285\u003cbr\u003e__7.3.1 RBAC를 사용해 권한 제어 구현하기 286\u003cbr\u003e__7.3.2 클러스터 롤 생성 288 \u003cbr\u003e__7.3.3 서비스 어카운트 생성 290\u003cbr\u003e__7.3.4 클러스터 롤 바인딩 생성 291 \u003cbr\u003e__7.3.5 일반 유저 294\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 8 쿠버네티스 애플리케이션 패키징 299\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e8.1 Kustomize 300\u003cbr\u003e__8.1.1 기본적인 사용 방법 301\u003cbr\u003eCOLUMN 권장하지 않는 commonLabels 309\u003cbr\u003e__8.1.2 재사용과 부분 오버레이 310 \u003cbr\u003e__8.1.3 Kustomize에서 시크릿 다루기 315\u003cbr\u003e__8.1.4 네트워크를 경유해서 매니페스트 생성하기 321\u003cbr\u003e8.2 Helm 323\u003cbr\u003e__8.2.1 Helm 설치 324 \u003cbr\u003e__8.2.2 Helm Chart와 리포지터리 325\u003cbr\u003e__8.2.3 Chart 설치하기 328\u003cbr\u003e__8.2.4 자체 Chart 생성하기 332\u003cbr\u003eCOLUMN 쿠버네티스의 권장 레이블 347\u003cbr\u003e__8.2.5 Chart를 레지스트리에 등록하기 347\u003cbr\u003eCOLUMN GHCR의 패키지와 리포지터리 연결하기 351\u003cbr\u003eCOLUMN Open Container Initiative(OCI) 353\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 9 컨테이너 운영 354\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e9.1 로그 운영 354\u003cbr\u003e__9.1.1 컨테이너 로그 354 \u003cbr\u003e__9.1.2 컨테이너 로그 운영 358\u003cbr\u003e__9.1.3 Elastic Stack에 의한 로그 수집, 관리 구성의 구축 360\u003cbr\u003eCOLUMN 안정화된 Elasticsearch 선택하기 384 \u003cbr\u003eCOLUMN 클라우드의 자체 로그 관리 385\u003cbr\u003e__9.1.4 stern 385\u003cbr\u003e9.2 가용성이 높은 쿠버네티스 운영 387\u003cbr\u003e__9.2.1 노드 장애 시 쿠버네티스 동작 387\u003cbr\u003e__9.2.2 Pod AntiAffinity를 통해 장애 저항성이 뛰어난 파드 배포 전략 388\u003cbr\u003e__9.2.3 CPU를 많이 사용하는 파드를 Node Affinity로 분리하기 394\u003cbr\u003e__9.2.4 Horizontal Pod Autoscaler를 사용한 파드의 오토스케일 399\u003cbr\u003e__9.2.5 Cluster Autoscaler를 사용한 노드의 오토 스케일 401\u003cbr\u003eCOLUMN 쿠버네티스 클러스터와 노드 운영을 가볍게 하는 구조 402\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 10 최적의 컨테이너 이미지 생성과 운영 403\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e10.1 운영에 최적인 컨테이너 이미지란? 403\u003cbr\u003e__10.1.1 이미지 사이즈 증가로 인해 발생하는 문제 404\u003cbr\u003e10.2 경량 베이스 이미지 404\u003cbr\u003e__10.2.1 scratch 405 \u003cbr\u003e__10.2.2 BusyBox 411\u003cbr\u003e__10.2.3 Alpine Linux 415\u003cbr\u003eCOLUMN Alpine Linux 베이스 이미지의 사용 여부 417\u003cbr\u003e__10.2.4 Distroless 418\u003cbr\u003e10.3 경량 컨테이너 이미지 생성하기 423\u003cbr\u003e__10.3.1 배포하는 애플리케이션의 사이즈 줄이기 423\u003cbr\u003e__10.3.2 컨테이너 이미지의 레이어 구조 의식하기 424\u003cbr\u003e10.4 Multi-stage builds 428\u003cbr\u003e__10.4.1 빌드 컨테이너와 실행 컨테이너 나누기 429\u003cbr\u003eCOLUMN 외부 이미지를 스테이지로 사용하기 432\u003cbr\u003e10.5 BuildKit 433\u003cbr\u003e__10.5.1 BuildKit이란? 433 \u003cbr\u003e__10.5.2 컨테이너의 멀티 플랫폼 대응 433\u003cbr\u003e__10.5.3 BuildKit으로 멀티 플랫폼에 대응하는 이미지 빌드하기 435\u003cbr\u003eCOLUMN QEMU 436 \u003cbr\u003eCOLUMN 멀티 플랫폼 이미지는 어디까지 대응해야 할까? 441\u003cbr\u003e10.6 안전한 컨테이너 이미지의 사용과 생성 441\u003cbr\u003e__10.6.1 컨테이너 이미지를 최소한으로 구성하기 442\u003cbr\u003e__10.6.2 권한 모드로 실행 피하기 442 \u003cbr\u003e__10.6.3 root 유저로 실행 피하기 442\u003cbr\u003e__10.6.4 신뢰할 수 있는 컨테이너 이미지와 도구 사용하기 446\u003cbr\u003e__10.6.5 Trivy로 컨테이너 이미지 취약성 체크하기 448\u003cbr\u003e10.7 CI 도구로 컨테이너 이미지 빌드하기 451\u003cbr\u003e__10.7.1 GitHub Actions 452 \u003cbr\u003e__10.7.2 템플릿에서 리포지터리 생성하기 453\u003cbr\u003e__10.7.3 워크플로 설정 455\u003cbr\u003e__10.7.4 워크플로 실행 460\u003cbr\u003eCOLUMN 운영에서는 latest 이미지 태그 피하기 464\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 11 컨테이너의 지속적 전달 465\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e11.1 지속적 전달이란? 465\u003cbr\u003e__11.1.1 다듬어지지 않은 배포 프로세스가 일으키는 문제 465\u003cbr\u003e__11.1.2 소프트웨어 전달의 중요성과 CI\/CD 구분 466\u003cbr\u003e__11.1.3 GitOps 방식의 지속적 전달 467\u003cbr\u003e11.2 Flux 469\u003cbr\u003e__11.2.1 Flux 설치 469\u003cbr\u003e__11.2.2 애플리케이션 배포 470\u003cbr\u003e11.3 Argo CD 475\u003cbr\u003e__11.3.1 Argo CD 설치 475\u003cbr\u003e__11.3.2 애플리케이션 배포 478\u003cbr\u003e11.4 PipeCD 484\u003cbr\u003e__11.4.1 PipeCD의 특징 484\u003cbr\u003e__11.4.2 퀵 스타트 환경 구축 485\u003cbr\u003e__11.4.3 애플리케이션 배포 489\u003cbr\u003eCOLUMN PipeCD에서 Control Plane과 Piped를 각각 구축하는 이유 493\u003cbr\u003e11.5 소프트웨어 전달의 완전 자동화 495\u003cbr\u003e__11.5.1 매니페스트로 정의하는 컨테이너 이미지 태그를 자동 업데이트하기 495\u003cbr\u003eCOLUMN GitOps에 승인 프로세스 넣기 507\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 12 컨테이너의 다양한 활용 방법 508\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e12.1 팀 개발에서 개발 환경을 통일하고 공유하기 508\u003cbr\u003e__12.1.1 사용하는 소프트웨어와 도구 통일하기 508\u003cbr\u003e__12.1.2 개발 환경과 집단 지성 510\u003cbr\u003eCOLUMN 컨테이너가 Vagrant를 대체할 수 있을까? 511\u003cbr\u003e12.2 커맨드 라인 도구를 컨테이너에서 사용하기 512\u003cbr\u003e__12.2.1 Trivy를 컨테이너에서 실행하기 512\u003cbr\u003e__12.2.2 셸 스크립트를 컨테이너에서 실행하기 515\u003cbr\u003e12.3 부하 테스트 517\u003cbr\u003e__12.3.1 Locust 개요 517\u003cbr\u003e__12.3.2 쿠버네티스에서 애플리케이션의 부하 테스트 518\u003cbr\u003eCOLUMN k6에서 부하 테스트 실행 526\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAPPENDIX A 개발 도구 셋업 528\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eA.1 WSL2 528\u003cbr\u003e__A.1.1 WSL2의 조건 529 \u003cbr\u003e__A.1.2 WSL2의 설치 529\u003cbr\u003e__A.1.3 WSL2로 사용할 수 있는 배포판 530\u003cbr\u003e__A.1.4 make 설치 531\u003cbr\u003eCOLUMN WSL2를 사용하는 개발 스타일 정착 532\u003cbr\u003eA.2 asdf 532\u003cbr\u003e__A.2.1 asdf란? 533 \u003cbr\u003e__A.2.2 asdf 설치 533\u003cbr\u003e__A.2.3 도구 설치 534 \u003cbr\u003e__A.2.4 사용하는 버전 설정 534\u003cbr\u003eA.3 kind 535\u003cbr\u003e__A.3.1 kind 설치 536\u003cbr\u003e__A.3.2 멀티 노드의 쿠버네티스 클러스터를 로컬 환경에 구축하기 536\u003cbr\u003eCOLUMN Docker in Docker \/ Container in Container 538\u003cbr\u003eA.4 Rancher Desktop 538\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAPPENDIX B 다양한 컨테이너 오케스트레이션 환경 542\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eB.1 Google Kubernetes Engine 542\u003cbr\u003e__B.1.1 GKE 클러스터의 구축 준비 543 \u003cbr\u003e__B.1.2 GKE 클러스터 구축 545\u003cbr\u003eB.2 Amazon Elastic Kubernetes Service 548\u003cbr\u003e__B.2.1 EKS 클러스터 구축 준비 548\u003cbr\u003e__B.2.2 eksctl을 사용해 EKS 클러스터 구축 550\u003cbr\u003eCOLUMN EKS on Fargate 555\u003cbr\u003eB.3 Azure Kubernetes Service 556\u003cbr\u003e__B.3.1 AKS 클러스터의 구축 준비 557 \u003cbr\u003e__B.3.2 AKS 클러스터 구축 559\u003cbr\u003e__B.3.3 AKS 클러스터 조작 560\u003cbr\u003eB.4 온프레미스 환경에서 쿠버네티스 클러스터 구축 561\u003cbr\u003e__B.4.1 온프레미스 클러스터 구축 준비 561\u003cbr\u003e__B.4.2 kubespray를 사용해 EKS 클러스터 구축 563\u003cbr\u003eB.5 Amazon Elastic Container Service 566\u003cbr\u003e__B.5.1 CDK로 ECS 클러스터 생성과 컨테이너 배포 정의하기 567\u003cbr\u003e__B.5.2 CDK로 ECS 클러스터를 생성하고 컨테이너 배포하기 569\u003cbr\u003eCOLUMN Amazon ECS Anywhere 571\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAPPENDIX C 컨테이너 개발과 운영 팁 572\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eC.1 컨테이너 런타임 572\u003cbr\u003e__C.1.1 containerd 573\u003cbr\u003eCOLUMN 쿠버네티스의 도커 deprecated 소동 574\u003cbr\u003eC.1.2 nerdctl 574\u003cbr\u003eC.2 쿠버네티스 팁 575\u003cbr\u003e__C.2.1 이페머럴 컨테이너를 통한 기존 파드 디버깅 575\u003cbr\u003e__C.2.2 Pod Security Admission을 사용한 보안 강화 578\u003cbr\u003eCOLUMN Open Policy Agent 581\u003cbr\u003eC.3 컨테이너 개발, 배포 팁 581\u003cbr\u003e__C.3.1 Compose Watch로 컨테이너 자동 업데이트하기 581\u003cbr\u003e__C.3.2 Tilt로 쿠버네티스 애플리케이션 다루기 583\u003cbr\u003eC.4 생성형 AI를 활용한 컨테이너 개발 효율화 585\u003cbr\u003e__C.4.1 ChatGPT 활용하기 586 \u003cbr\u003e__C.4.2 GitHub Copilot 활용하기 587\u003cbr\u003eC.5 Alpine Linux 패키지 매니저 apk 589\u003cbr\u003e__C.5.1 패키지 매니저 apk 조작하기 589 \u003cbr\u003e__C.5.2 alpine-sdk 패키지 592\u003cbr\u003e\u003cbr\u003e참고 문헌 593\u003cbr\u003e찾아보기 595 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e상세 이미지\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate5313\/MidCate009\/531285565(1).jpg\" border=\"0\" alt=\"상세 이미지 1\"\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책 속으로\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  웹 애플리케이션 개발을 예로 들어보자.\u003cbr\u003e컨테이너를 사용하면 로컬 개발 환경에 필요한 애플리케이션을 빠르게 준비할 수 있고 플랫폼에 상관없이 그대로 배포할 수 있다.\u003cbr\u003e컨테이너마다 같은 실행 환경을 사용하므로 실행 환경에 따른 문제도 최소화할 수 있다.\u003cbr\u003e또한 Apache나 nginx와 같은 웹서버도 복잡한 단계 없이 컨테이너에서 설정할 수 있다.\u003cbr\u003e미들웨어를 포함한 시스템 구성 관리도 설정 파일에서 정의한다.\u003cbr\u003e컨테이너를 도입하는 것만으로도 개발과 운영이 지금보다 더 간편해질 수 있다.\u003cbr\u003e\u003cbr\u003e--- p.12\u003cbr\u003e\u003cbr\u003e지금까지의 내용을 보면 모든 구조를 컨테이너로 변경하고 싶어질 수도 있지만 컨테이너가 모든 곳에 적합한 것은 아니다.\u003cbr\u003e데이터 스토어와 같이 컨테이너를 사용하기에는 난이도가 높은 부분도 존재한다.\u003cbr\u003e\/ 최근에는 클라우드 플랫폼에서 부하가 적고 스케일링되는 매니지드 데이터 스토어도 서비스 중이므로, 무리해서 컨테이너를 사용하지 않아도 적절한 조합으로 사용할 수 있다.\u003cbr\u003e어디까지나 적재적소에 적절한 기능을 선택하는 것이 중요하다.\u003cbr\u003e웹서버나 API 서버와 같이 상태를 저장하지 않는 무상태(stateless) 특성의 서버는 많은 시간을 소비하지 않고도 컨테이너화할 수 있다.\u003cbr\u003e\/ 높은 이식성의 장점을 생각해보면 컨테이너 기술은 개발 환경이나 운영 환경에 모두 도입해야 좋은 효과를 볼 수 있다.\u003cbr\u003e이미 많은 성공 케이스가 있으며, 클라우드 매니지드 서비스도 사용하기 쉽게 되어 있다.\u003cbr\u003e\u003cbr\u003e--- p.19\u003cbr\u003e\u003cbr\u003e디플로이먼트와 레플리카셋으로 생성된 파드는 웹서버와 같은 상주 애플리케이션에 적합하지만, 잡은 대규모의 계산과 배치(batch)형 애플리케이션에 적합하다.\u003cbr\u003e잡은 모든 파드가 정상 종료되어도 파드는 삭제되지 않고 유지되므로 종료 후 파드의 로그와 실행 결과를 분석할 수 있다.\u003cbr\u003e잡은 여러 파드를 병렬로 실행하여 쉽게 스케일 아웃할 수 있으며, 파드로 실행되어 쿠버네티스의 서비스와 연동하여 처리하기 쉽다는 점도 있다.\u003cbr\u003e\u003cbr\u003e--- p.239\u003cbr\u003e\u003cbr\u003escratch 이미지는 Dockerfile 명령에 의해 컨테이너 외부에서 파일을 주입받아 처음으로 이미지를 이룬다.\u003cbr\u003e현존하는 모든 컨테이너 이미지의 부모를 따라가면 모두 scratch 이미지에 도달한다.\u003cbr\u003e즉, scratch는 컨테이너 이미지의 조상에 해당한다.\u003cbr\u003e\/ scratch 내부는 비어 있다.\u003cbr\u003e이를 베이스로 이미지를 만들 때 컨테이너 외부에서 필요한 파일을 복사하여 이미지를 구성한다.\u003cbr\u003e지금까지는 sh를 사용해 컨테이너 내부에 들어갈 수 있어서 컨테이너 내부가 언뜻 보기에는 보통의 Linux와 차이가 없다고 느꼈을 수 있다.\u003cbr\u003e그러므로 빈 scratch 이미지에서 어떻게 이와 같이 OS가 충실하게 재현되는 것처럼 보이는 이미지를 생성하는지 의문이 생길 수도 있다.\u003cbr\u003e\/ 실제로 Ubuntu 이미지를 생성해보자.\u003cbr\u003e\u003cbr\u003e--- p.405\u003cbr\u003e\u003cbr\u003e팀 개발에서는 사용하는 도구와 버전이 통일되어 있어야 불필요한 트러블을 피할 수 있다.\u003cbr\u003e여러 프로젝트를 함께 진행할 때는 프로젝트를 전환하면서 호스트 환경이 오염될 수도 있다.\u003cbr\u003e이와 같은 문제를 피하기 위해서 호스트로부터 격리하고 필요한 도구를 포함하는 컨테이너를 공통 개발 환경으로 제공하는 것이 좋다.\u003cbr\u003e\/ 예를 들어 MySQL과 Redis와 같은 데이터 스토어를 사용하려면 이들을 조작하기 위한 클라이언트 도구가 필요하다.\u003cbr\u003e고성능 MySQL 클라이언트인 mycli1와 Redis 클라이언트인 Redis Cli2를 포함하는 redis-tools와 같은 도구를 팀 표준으로 사용하는 것을 생각해보자.\u003cbr\u003e\n\u003c\/div\u003e \u003cdiv\u003e--- pp.508-509\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e출판사 리뷰\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e따라 하며 익히는 컨테이너 기술 실전 입문서\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e날마다 바뀌는 소프트웨어 개발 환경 속에서 컨테이너 기술은 선택이 아닌 필수 기술로 자리 잡았으며, 도커와 쿠버네티스는 이제 개발자라면 누구나 이해해야 할 핵심 도구다.\u003cbr\u003e프런트엔드와 백엔드, 인프라, DevOps를 아우르는 전방위적 수요는 모든 개발자에게 컨테이너 기술을 요구하고 있다.\u003cbr\u003e\u003cbr\u003e이 책은 도커와 쿠버네티스를 중심으로 컨테이너 기술을 단계적으로 익힐 수 있도록 구성되어 있다.\u003cbr\u003e단순한 개념 나열이 아닌, 실습 중심의 예제와 구성으로 초보자도 실제 업무에 곧바로 적용할 수 있는 실전 감각을 기를 수 있다.\u003cbr\u003e이미지 빌드, 다중 컨테이너 구성, 쿠버네티스를 통한 오케스트레이션 전략까지, 실무에 꼭 필요한 기술들을 풍부하게 담았다.\u003cbr\u003e이번 개정신판은 변화한 최신 생태계를 반영하여 내용을 전면 수정·보완하였으며, 저자의 실무 경험과 기술적 통찰이 더해져 더욱 깊이 있고 실용적인 지침서를 완성했다.\u003cbr\u003e개념 학습을 넘어 개발과 운영에 필요한 사고방식을 형성하고, 실무에 컨테이너 기술을 적용할 수 있을 것이다.\u003cbr\u003e\u003cbr\u003e초보자부터 실무자까지, 컨테이너 기술을 제대로 배우고 싶은 모든 개발자를 위한 친절하고도 실질적인 가이드다.\u003cbr\u003e이 책과 함께 컨테이너 기술 여정의 첫걸음을 내디뎌보자!\u003cbr\u003e\u003cbr\u003e주요 내용\u003cbr\u003e● 컨테이너와 도커의 개념, 구조, 실행 원리\u003cbr\u003e● 도커 이미지 빌드와 실행, 포트포워딩 실습\u003cbr\u003e● 컴포즈를 이용한 다중 컨테이너 구성 및 실행\u003cbr\u003e● 컨테이너 간 네트워크 연동과 마운트, 시크릿 관리\u003cbr\u003e● 도커 기반 웹 애플리케이션과 API 서버 구축\u003cbr\u003e● 실전 MySQL 데이터 스토어와 마이그레이터 컨테이너 설정\u003cbr\u003e● 쿠버네티스를 통한 고가용성 운영 및 스케일링 전략\u003cbr\u003e● 운영 환경에서의 보안 설정, 볼륨, 로그 수집 등 실무 기술 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e발행일 : \u003c\/strong\u003e2025년 05월 29일\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e쪽수, 무게, 크기 : \u003c\/strong\u003e624쪽 | 1,192g | 188*245*30mm\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 : \u003c\/strong\u003e9791194587279\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cspan\u003e\u003c\/span\u003e\n\u003c\/center\u003e\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893214216234,"sku":"138196","price":53.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/53ee88d2ae7efa6b27b4d1030aeed782.jpg?v=1765392130","url":"https:\/\/librairie.coreenne.fr\/ko\/products\/138196","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}