{"product_id":"138196","title":"Learn Docker\/Kubernetes container development and operation from the beginning. ","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\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\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Learn Docker\/Kubernetes container development and operation from the beginning. \u003c\/div\u003e\n\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\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\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\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\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\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\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\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\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\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\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e  \u003cdiv\u003e\n\u003cb\u003eA Complete Guide to Docker\/Kubernetes Container Technology for Practical Application Development and Operation\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e This is a practical introductory book that summarizes the core of container technology using Docker and Kubernetes.\u003cbr\u003e It is structured so that you can learn step by step, starting from the concept of container virtualization technology, Docker-based application deployment and image creation, network configuration, and the orchestration system Kubernetes.\u003cbr\u003e This book has been fully revised and expanded since its first edition to reflect the latest changes in the ecosystem. It contains the author's extensive experience in container development and practical case studies, making it useful for everyone from beginners to intermediate users.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e You can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindex\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Translator's Preface xiii\u003cbr\u003e Beta Reader Review xiv\u003cbr\u003e Beginning xvi\u003cbr\u003e Acknowledgments xviii\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 1 Containers and Docker Basics 1\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 1.1 What is a container? 1\u003cbr\u003e __1.1.1 Containerized Virtualization 2  \u003cbr\u003e__1.1.2 Container Use Case 3\u003cbr\u003e 5 Disadvantages of COLUMN Containers\u003cbr\u003e 1.2 What is Docker? 5\u003cbr\u003e __1.2.1 History of Docker and Docker, Inc. 6\u003cbr\u003e __1.2.2 Docker 7 Focused on Application Deployment\u003cbr\u003e __1.2.3 Docker Access 8\u003cbr\u003e COLUMN Moby Project 11\u003cbr\u003e 1.3 Why Use Containers? 11\u003cbr\u003e __1.3.1 Ensuring reproducibility through immutable applications and execution environments 12\u003cbr\u003e COLUMN Cloud IaC and Immutable Infrastructure 15\u003cbr\u003e COLUMN Container Technology and Serverless Platforms 16\u003cbr\u003e __1.3.2 Ease of Application Configuration Management 16\u003cbr\u003e __1.3.3 High portability regardless of environment 18\u003cbr\u003e __1.3.4 Efficiency of Container-Based Development 20\u003cbr\u003e 1.4 Building a Local Container Execution Environment 20\u003cbr\u003e __1.4.1 Installing Docker Desktop 21\u003cbr\u003e COLUMN ARM Architecture 24\u003cbr\u003e __1.4.2 Docker Desktop Setup 25\u003cbr\u003e __1.4.3 Docker Desktop Troubleshooting 30\u003cbr\u003e COLUMN Linux Environment Installation 32\u003cbr\u003e COLUMN Docker Subscription Plan 32\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 2 CONTAINER DEPLOYMENT 33\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 2.1 Running Applications in Containers 33 \u003cbr\u003e__2.1.1 Container Images and Container Basics 34\u003cbr\u003e 2.2 Creating a Simple Application and Container Image 37\u003cbr\u003e __2.2.1 Dockerfile Instruction 39\u003cbr\u003e Overwrite 40 when executing COLUMN CMD\u003cbr\u003e Learn how to execute commands with COLUMN ENTRYPOINT 42\u003cbr\u003e COLUMN Other Instructions in the Dockerfile 44\u003cbr\u003e COLUMN CMD Specification Method 45\u003cbr\u003e __2.2.2 Running a Container 45\u003cbr\u003e COLUMN Short Docker Commands 46\u003cbr\u003e 2.3 Handling Images 48\u003cbr\u003e __2.3.1 docker image build ― Image building 50\u003cbr\u003e __2.3.2 docker search ― Image search 54\u003cbr\u003e __2.3.3 docker image pull ― Retrieving an image 56\u003cbr\u003e __2.3.4 docker image ls ― Image list 57\u003cbr\u003e __2.3.5 docker image tag ― Image tag 57\u003cbr\u003e __2.3.6 docker login ― Container registry login 60\u003cbr\u003e __2.3.7 docker image push ― Image release 64\u003cbr\u003e Publishing Container Images to GHCR 67\u003cbr\u003e 2.4 Handling Containers 67\u003cbr\u003e __2.4.1 Container Life Cycle 68\u003cbr\u003e __2.4.2 docker container run ― Creating and running a container 69 \u003cbr\u003e71 Frequently Used Options When Executing the COLUMN Command\u003cbr\u003e __2.4.3 docker container ls ― container list 72\u003cbr\u003e __2.4.4 docker container stop ― Stop the container 74\u003cbr\u003e __2.4.5 docker container rm ― Destroying a container 74\u003cbr\u003e __2.4.6 docker container logs ― Checking logs (standard stream output) 76\u003cbr\u003e __2.4.7 docker container exec ― Execute a command in a running container 77\u003cbr\u003e __2.4.8 docker container cp ― copy file 78\u003cbr\u003e 2.5 Commands for Operations Management 79\u003cbr\u003e __2.5.1 prune ― destruction 79\u003cbr\u003e __2.5.2 docker container stats ― Get usage status 80\u003cbr\u003e 2.6 Docker Compose 81\u003cbr\u003e __2.6.1 Running a Single Container with Docker Compose 81\u003cbr\u003e __2.6.2 Running Multiple Containers with Compose 84\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 3 Building and Deploying Practical Containers 93\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 3.1 Configuring Applications and Containers 93\u003cbr\u003e __3.1.1 One Container = One Process? 95\u003cbr\u003e __3.1.2 One concern per container 98\u003cbr\u003e 3.2 Container Portability 100 \u003cbr\u003e__3.2.1 Differences with Kernel and Architecture 100\u003cbr\u003e COLUMN Containers 101 on Windows\u003cbr\u003e __3.2.2 Library, Dynamic Linking 101\u003cbr\u003e 3.3 Container-Friendly Applications 102\u003cbr\u003e __3.3.1 Building an image including a configuration file 103\u003cbr\u003e __3.3.2 Using configuration files outside the container 103\u003cbr\u003e COLUMN It's not just container-friendly products.\u003cbr\u003e 107\u003cbr\u003e 3.4 How to handle security information 107\u003cbr\u003e __3.4.1 Container 107 Receiving Security Information\u003cbr\u003e __3.4.2 Difficulties in managing version control systems and security information 108\u003cbr\u003e __3.4.3 Managing Security Information Using Secrets 109\u003cbr\u003e COLUMN Software Supply Chain Attacks 111\u003cbr\u003e __3.4.4 There is no perfect solution 111\u003cbr\u003e 3.5 How to Use Persistent Data 112\u003cbr\u003e __3.5.1 Data Volume 112\u003cbr\u003e __3.5.2 Data Volume Container 114\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 4 Building Applications Using Multiple Containers 119\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 4.1 Configuring Web Applications 119\u003cbr\u003e __4.1.1 Application Specification 120\u003cbr\u003e __4.1.2 Architecture 120\u003cbr\u003e 4.2 Building MySQL 123 \u003cbr\u003e__4.2.1 Creating a password for a user connecting to MySQL 124\u003cbr\u003e __4.2.2 Setting up additional MySQL containers 125\u003cbr\u003e __4.2.3 MySQL Dockerfile 126\u003cbr\u003e __4.2.4 Configuring the MySQL Container 126\u003cbr\u003e 4.3 Building the Database Migrator 128\u003cbr\u003e __4.3.1 Migrating a Database with golang-migrate 128\u003cbr\u003e __4.3.2 Migration Execution Script 131\u003cbr\u003e __4.3.3 Database Migrator Dockerfile 132\u003cbr\u003e COLUMN .dockerignore file 134\u003cbr\u003e __4.3.4 Configuring the Database Migrator Container 134\u003cbr\u003e 4.4 Building an API Server and Web Server 139\u003cbr\u003e __4.4.1 Repository Directory Configuration 140\u003cbr\u003e COLUMN Polyrepo and Monorepo 142\u003cbr\u003e __4.4.2 Executable file and command details 142\u003cbr\u003e __4.4.3 Building an API Server 144\u003cbr\u003e __4.4.4 Building a Web Server 151\u003cbr\u003e 4.5 Building a Reverse Proxy 158\u003cbr\u003e __4.5.1 Template structure of nginx container 159\u003cbr\u003e COLUMN entrykit 163\u003cbr\u003e __4.5.2 Dockerfile 163\u003cbr\u003e 4.6 Running a Task Management App by Configuring Multiple Containers 164\u003cbr\u003e __4.6.1 compose.yaml 164  \u003cbr\u003e__4.6.2 Running the Task Management App 170\u003cbr\u003e 4.7 Improving the Development Experience with Multiple Container Configurations with Tilt 171\u003cbr\u003e __4.7.1 Tilt Execution 171\u003cbr\u003e __4.7.2 Tilt's Powerful Features 172\u003cbr\u003e 4.8 Container Orchestration Basics 176\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapter 5: Introduction to Kubernetes 177\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 5.1 What is Kubernetes? 178\u003cbr\u003e __5.1.1 The Rise of Docker and the Birth of Kubernetes 178\u003cbr\u003e __5.1.2 Kubernetes Phase 179\u003cbr\u003e 5.2 Running Kubernetes Locally 181\u003cbr\u003e __5.2.1 Building a Local Kubernetes Environment in Docker Desktop 181\u003cbr\u003e COLUMN Other Kubernetes Build Tools 187\u003cbr\u003e 5.3 Kubernetes Overview 187\u003cbr\u003e 5.4 Kubernetes Cluster and Node 188\u003cbr\u003e COLUMN Management Components that Make Up the Control Plane 190\u003cbr\u003e 5.5 Namespaces 191\u003cbr\u003e 5.6 Pad 192\u003cbr\u003e __5.6.1 Creating and Deploying Pods 193\u003cbr\u003e __5.6.2 Manipulating Pads 195\u003cbr\u003e COLUMN Address of the pod and the container inside the pod 197\u003cbr\u003e 5.7 ReplicaSet 197\u003cbr\u003e 5.8 Deployment 199\u003cbr\u003e __5.8.1 ReplicaSet Life Cycle 202\u003cbr\u003e __5.8.2 Executing a Rollback 204 \u003cbr\u003e5.9 Service 205\u003cbr\u003e __5.9.1 Traffic Routing Using Label Selectors 208\u003cbr\u003e Analysis of the name of the COLUMN service 211\u003cbr\u003e __5.9.2 ClusterIP Service 211\u003cbr\u003e __5.9.3 Headless Service 211\u003cbr\u003e __5.9.4 NodePort Service 213\u003cbr\u003e __5.9.5 LoadBalancer Service 214\u003cbr\u003e __5.9.6 ExternalName Service 214\u003cbr\u003e 5.10 Ingress 215\u003cbr\u003e __5.10.1 Ingress Controller and Ingress Class 215\u003cbr\u003e __5.10.2 Access via Ingress 216\u003cbr\u003e COLUMN How to specify resource types and resource names with kubectl 221\u003cbr\u003e Detecting Manifest File Updates with COLUMN Tilt and Automatically Updating Resources 222\u003cbr\u003e COLUMN kk9s 223\u003cbr\u003e COLUMN Kubernetes API 224\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 6: Deploying Kubernetes and Building a Cluster 226\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 6.1 Configuring the Task Management App 226\u003cbr\u003e __6.1.1 Kubernetes Resources Configuring the Task Management App 227\u003cbr\u003e 6.2 Deploying the Task Management App to Kubernetes 227\u003cbr\u003e __6.2.1 Namespace 228\u003cbr\u003e __6.2.2 Secret 228\u003cbr\u003e __6.2.3 MySQL Distribution 232\u003cbr\u003e COLUMN StatefulSet's serviceName 237 \u003cbr\u003e__6.2.4 Deploying the Database Migrator 238\u003cbr\u003e __6.2.5 Deploying the API Server 241\u003cbr\u003e __6.2.6 Web Server Deployment 245\u003cbr\u003e 6.3 Publishing Kubernetes Applications Online 251\u003cbr\u003e __6.3.1 Deploying Azure Kubernetes Service 251\u003cbr\u003e COLUMN Publishing Your Application with Your Own Domain and HTTPS 257\u003cbr\u003e COLUMN kubectx 259\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 7 Leveraging Kubernetes 260\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 7.1 Pod Deployment Strategy 260\u003cbr\u003e __7.1.1 RollingUpdate 261\u003cbr\u003e kubectl patch command to update part of COLUMN resource 266\u003cbr\u003e __7.1.2 Setting up status checks when running containers 268\u003cbr\u003e COLUMN Safely Stopping Applications and Deleting Pods 271\u003cbr\u003e __7.1.3 Blue-Green Deployment 272\u003cbr\u003e COLUMN 277 Products that Implement Service Mesh\u003cbr\u003e 7.2 Running Regular Batch Jobs in Kubernetes 278\u003cbr\u003e __7.2.1 CronJob 278\u003cbr\u003e __7.2.2 Running cron jobs with time zone considerations 284\u003cbr\u003e __7.2.3 Running a one-time job from a cron job 284\u003cbr\u003e 7.3 User Management and Role-Based Access Control (RBAC) 285 \u003cbr\u003e__7.3.1 Implementing Permission Control Using RBAC 286\u003cbr\u003e __7.3.2 Creating a Cluster Role 288\u003cbr\u003e __7.3.3 Creating a Service Account 290\u003cbr\u003e __7.3.4 Creating a Cluster Role Binding 291\u003cbr\u003e __7.3.5 General User 294\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 8: Packaging Kubernetes Applications 299\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 8.1 Kustomize 300\u003cbr\u003e __8.1.1 Basic Usage 301\u003cbr\u003e COLUMN Not recommended commonLabels 309\u003cbr\u003e __8.1.2 Reuse and Partial Overlays 310\u003cbr\u003e __8.1.3 Handling Secrets in Kustomize 315\u003cbr\u003e __8.1.4 Generating a Manifest Over the Network 321\u003cbr\u003e 8.2 Helm 323\u003cbr\u003e __8.2.1 Installing Helm 324\u003cbr\u003e __8.2.2 Helm Charts and Repositories 325\u003cbr\u003e __8.2.3 Installing Chart 328\u003cbr\u003e __8.2.4 Creating Your Own Chart 332\u003cbr\u003e COLUMN Recommended Labels for Kubernetes 347\u003cbr\u003e __8.2.5 Registering a Chart in the Registry 347\u003cbr\u003e COLUMN Connecting GHCR Packages and Repositories 351\u003cbr\u003e COLUMN Open Container Initiative (OCI) 353\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 9 CONTAINER OPERATIONS 354\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 9.1 Log Operation 354\u003cbr\u003e __9.1.1 Container Log 354\u003cbr\u003e __9.1.2 Container Log Operations 358 \u003cbr\u003e__9.1.3 Building a log collection and management configuration using the Elastic Stack 360\u003cbr\u003e COLUMN Choosing a Stable Elasticsearch 384\u003cbr\u003e COLUMN Cloud's Own Log Management 385\u003cbr\u003e __9.1.4 stern 385\u003cbr\u003e 9.2 Highly Available Kubernetes Operations 387\u003cbr\u003e __9.2.1 Kubernetes Behavior During Node Failure 387\u003cbr\u003e __9.2.2 Failure-Resilient Pod Deployment Strategy with Pod AntiAffinity 388\u003cbr\u003e __9.2.3 Separating CPU-intensive pods with Node Affinity 394\u003cbr\u003e __9.2.4 Autoscaling Pods Using the Horizontal Pod Autoscaler 399\u003cbr\u003e __9.2.5 Autoscaling Nodes Using Cluster Autoscaler 401\u003cbr\u003e COLUMN 402: A Structure for Lightweight Kubernetes Cluster and Node Operation\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 10 Creating and Operating Optimal Container Images 403\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 10.1 What is the optimal container image for operation? 403\u003cbr\u003e __10.1.1 Problem 404 due to increased image size\u003cbr\u003e 10.2 Lightweight Base Image 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 Whether to use the Alpine Linux base image 417\u003cbr\u003e __10.2.4 Distroless 418\u003cbr\u003e 10.3 Creating a lightweight container image 423\u003cbr\u003e __10.3.1 Reducing the size of your deployed application 423\u003cbr\u003e __10.3.2 Be aware of the layer structure of container images 424\u003cbr\u003e 10.4 Multi-stage builds 428\u003cbr\u003e __10.4.1 Separating Build Containers and Run Containers 429\u003cbr\u003e COLUMN Using an external image as a stage 432\u003cbr\u003e 10.5 BuildKit 433\u003cbr\u003e __10.5.1 What is BuildKit? 433\u003cbr\u003e __10.5.2 Container Multi-Platform Support 433\u003cbr\u003e __10.5.3 Building Multi-Platform Images with BuildKit 435\u003cbr\u003e COLUMN QEMU 436\u003cbr\u003e COLUMN: How far should multi-platform images go? 441\u003cbr\u003e 10.6 Using and Creating Secure Container Images 441\u003cbr\u003e __10.6.1 Minimally Configuring Container Images 442\u003cbr\u003e __10.6.2 Avoid running in privileged mode 442\u003cbr\u003e __10.6.3 Avoid running as root user 442\u003cbr\u003e __10.6.4 Using Trusted Container Images and Tools 446 \u003cbr\u003e__10.6.5 Checking Container Image Vulnerabilities with Trivy 448\u003cbr\u003e 10.7 Building Container Images with CI Tools 451\u003cbr\u003e __10.7.1 GitHub Actions 452\u003cbr\u003e __10.7.2 Creating a Repository from a Template 453\u003cbr\u003e __10.7.3 Workflow Settings 455\u003cbr\u003e __10.7.4 Workflow Execution 460\u003cbr\u003e Avoiding the latest image tag in COLUMN operations 464\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 11 Continuous Delivery of Containers 465\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 11.1 What is Continuous Delivery? 465\u003cbr\u003e __11.1.1 Problems Caused by Unpolished Deployment Processes 465\u003cbr\u003e __11.1.2 The Importance of Software Delivery and the CI\/CD Distinction 466\u003cbr\u003e __11.1.3 Continuous Delivery with GitOps 467\u003cbr\u003e 11.2 Flux 469\u003cbr\u003e __11.2.1 Flux Installation 469\u003cbr\u003e __11.2.2 Application Deployment 470\u003cbr\u003e 11.3 Argo CD 475\u003cbr\u003e __11.3.1 Argo CD Installation 475\u003cbr\u003e __11.3.2 Application Deployment 478\u003cbr\u003e 11.4 PipeCD 484\u003cbr\u003e __11.4.1 PipeCD Features 484\u003cbr\u003e __11.4.2 Building a Quick Start Environment 485\u003cbr\u003e __11.4.3 Application Deployment 489\u003cbr\u003e COLUMN Why Build a Control Plane and Piped Separately in PipeCD 493\u003cbr\u003e 11.5 Full Automation of Software Delivery 495 \u003cbr\u003e__11.5.1 Automatically updating container image tags defined in the manifest 495\u003cbr\u003e COLUMN 507: Incorporating an Approval Process into GitOps\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPTER 12: Various Uses of Containers 508\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 12.1 Unifying and Sharing Development Environments in Team Development 508\u003cbr\u003e __12.1.1 Unifying the Software and Tools You Use 508\u003cbr\u003e __12.1.2 Development Environment and Collective Intelligence 510\u003cbr\u003e Can COLUMN Containers Replace Vagrant? 511\u003cbr\u003e 12.2 Using Command Line Tools in Containers 512\u003cbr\u003e __12.2.1 Running Trivy in a Container 512\u003cbr\u003e __12.2.2 Running a shell script in a container 515\u003cbr\u003e 12.3 Load Testing 517\u003cbr\u003e __12.3.1 Locust Overview 517\u003cbr\u003e __12.3.2 Load Testing Applications in Kubernetes 518\u003cbr\u003e Running load tests on COLUMN k6 526\u003cbr\u003e\u003cbr\u003e \u003cb\u003eAPPENDIX A: Setting Up Development Tools 528\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e A.1 WSL2 528\u003cbr\u003e __A.1.1 WSL2 Conditions 529\u003cbr\u003e __A.1.2 Installing WSL2 529\u003cbr\u003e __A.1.3 Distributions available for WSL2 530\u003cbr\u003e __A.1.4 make installation 531 \u003cbr\u003eCOLUMN Establishing a Development Style Using WSL2 532\u003cbr\u003e A.2 asdf 532\u003cbr\u003e __A.2.1 What is asdf? 533\u003cbr\u003e __A.2.2 asdf installation 533\u003cbr\u003e __A.2.3 Tool Installation 534\u003cbr\u003e __A.2.4 Set the version used 534\u003cbr\u003e A.3 kind 535\u003cbr\u003e __A.3.1 kind installation 536\u003cbr\u003e __A.3.2 Building a Multi-Node Kubernetes Cluster in Your Local Environment 536\u003cbr\u003e COLUMN Docker in Docker \/ Container in Container 538\u003cbr\u003e A.4 Rancher Desktop 538\u003cbr\u003e\u003cbr\u003e \u003cb\u003eAPPENDIX B Various Container Orchestration Environments 542\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e B.1 Google Kubernetes Engine 542\u003cbr\u003e __B.1.1 Preparing to Build a GKE Cluster 543\u003cbr\u003e __B.1.2 Building a GKE Cluster 545\u003cbr\u003e B.2 Amazon Elastic Kubernetes Service 548\u003cbr\u003e __B.2.1 Preparing to Build an EKS Cluster 548\u003cbr\u003e __B.2.2 Building an EKS Cluster Using eksctl 550\u003cbr\u003e COLUMN EKS on Fargate 555\u003cbr\u003e B.3 Azure Kubernetes Service 556\u003cbr\u003e __B.3.1 Preparing to Build an AKS Cluster 557\u003cbr\u003e __B.3.2 Building an AKS Cluster 559\u003cbr\u003e __B.3.3 AKS Cluster Operations 560\u003cbr\u003e B.4 Building a Kubernetes Cluster in an On-Premises Environment 561\u003cbr\u003e __B.4.1 Preparing to Build an On-Premises Cluster 561 \u003cbr\u003e__B.4.2 Building an EKS Cluster Using Kubespray 563\u003cbr\u003e B.5 Amazon Elastic Container Service 566\u003cbr\u003e __B.5.1 Creating an ECS Cluster and Defining Container Deployments with CDK 567\u003cbr\u003e __B.5.2 Creating an ECS Cluster and Deploying Containers with CDK 569\u003cbr\u003e COLUMN Amazon ECS Anywhere 571\u003cbr\u003e\u003cbr\u003e \u003cb\u003eAPPENDIX C Container Development and Operation Tips 572\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e C.1 Container Runtime 572\u003cbr\u003e __C.1.1 containerd 573\u003cbr\u003e COLUMN Kubernetes' Docker Deprecation: The Ruckus 574\u003cbr\u003e C.1.2 nerdctl 574\u003cbr\u003e C.2 Kubernetes Tip 575\u003cbr\u003e __C.2.1 Debugging Existing Pods via Ephemeral Containers 575\u003cbr\u003e __C.2.2 Hardening Security Using Pod Security Admission 578\u003cbr\u003e COLUMN Open Policy Agent 581\u003cbr\u003e C.3 Container Development and Deployment Tips 581\u003cbr\u003e __C.3.1 Automatically Updating Containers with Compose Watch 581\u003cbr\u003e __C.3.2 Handling Kubernetes Applications with Tilt 583\u003cbr\u003e C.4 Improving Container Development Efficiency Using Generative AI 585\u003cbr\u003e __C.4.1 Using ChatGPT 586\u003cbr\u003e __C.4.2 Using GitHub Copilot 587\u003cbr\u003e C.5 Alpine Linux Package Manager apk 589 \u003cbr\u003e__C.5.1 Manipulating Package Manager APK 589\u003cbr\u003e __C.5.2 alpine-sdk package 592\u003cbr\u003e\u003cbr\u003e Reference 593\u003cbr\u003e Search 595\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDetailed image\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate5313\/MidCate009\/531285565(1).jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eInto the book\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Let's take web application development as an example.\u003cbr\u003e Containers allow you to quickly prepare applications for your local development environment and deploy them as-is, regardless of platform.\u003cbr\u003e Since each container uses the same execution environment, problems depending on the execution environment can be minimized.\u003cbr\u003e Additionally, web servers such as Apache or nginx can be set up in containers without complicated steps.\u003cbr\u003e System configuration management, including middleware, is also defined in the settings file.\u003cbr\u003e Just introducing containers can make development and operations easier than they are now.\u003cbr\u003e\u003cbr\u003e --- p.12\u003cbr\u003e\u003cbr\u003e Looking at what we've covered so far, you might be tempted to convert all your structures to containers, but containers aren't suitable for everything. \u003cbr\u003eThere are also some areas where using containers, such as data stores, can be difficult.\u003cbr\u003e \/ Recently, managed data stores with low load and scalability are also being serviced on cloud platforms, so you can use them in an appropriate combination without having to force containers.\u003cbr\u003e It is important to choose the right function for the right place.\u003cbr\u003e Servers that are stateless, such as web servers or API servers, can be containerized without spending a lot of time.\u003cbr\u003e \/ Considering the advantage of high portability, container technology can only be effective if introduced to both development and operational environments.\u003cbr\u003e There are already many success stories, and cloud managed services are becoming easier to use.\u003cbr\u003e\u003cbr\u003e --- p.19\u003cbr\u003e \u003cbr\u003ePods created with Deployments and ReplicaSets are suitable for resident applications such as web servers, but Jobs are suitable for large-scale computation and batch applications.\u003cbr\u003e Even if all caught pods are terminated normally, the pods are not deleted and remain, so you can analyze the logs and execution results of the pods after termination.\u003cbr\u003e It can be easily scaled out by running multiple pods in parallel, and it is easy to process by running as a pod and connecting with Kubernetes services.\u003cbr\u003e\u003cbr\u003e --- p.239\u003cbr\u003e\u003cbr\u003e A scratch image is the first image created by injecting files from outside the container via the Dockerfile command.\u003cbr\u003e If we follow the parents of all existing container images, they all end up at the scratch image.\u003cbr\u003e That is, scratch is the ancestor of the container image.\u003cbr\u003e \/ scratch The inside is empty. \u003cbr\u003eWhen creating an image based on this, the necessary files are copied from outside the container to configure the image.\u003cbr\u003e Up until now, you could enter the container using sh, so at first glance, the inside of the container may seem no different from a normal Linux system.\u003cbr\u003e So you might wonder how we can generate an image from a blank scratch image that looks like it faithfully reproduces the OS.\u003cbr\u003e \/ Let's actually create an Ubuntu image.\u003cbr\u003e\u003cbr\u003e --- p.405\u003cbr\u003e\u003cbr\u003e In team development, unified tools and versions can help avoid unnecessary trouble.\u003cbr\u003e When working on multiple projects simultaneously, the host environment may become contaminated as projects are switched.\u003cbr\u003e To avoid problems like this, it's a good idea to provide a common development environment in a container that is isolated from the host and includes the necessary tools. \u003cbr\u003e\/ For example, to use data stores such as MySQL and Redis, you need client tools to manipulate them.\u003cbr\u003e Consider using a team standard such as redis-tools, which includes mycli1, a high-performance MySQL client, and Redis Cli2, a Redis client.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- pp.508-509\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eA practical introduction to container technology that you can learn by following along.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e In the ever-changing software development environment, container technology has become a necessity, not an option. Docker and Kubernetes are now core tools that every developer must understand.\u003cbr\u003e The omnidirectional demands spanning frontend, backend, infrastructure, and DevOps are demanding container technology from all developers.\u003cbr\u003e\u003cbr\u003e This book is structured to help you learn container technology step by step, focusing on Docker and Kubernetes. \u003cbr\u003eRather than simply listing concepts, it provides practice-oriented examples and structure, allowing even beginners to develop a practical sense that can be applied immediately to actual work.\u003cbr\u003e It is packed with essential practical skills, from image building, multi-container configuration, and orchestration strategies using Kubernetes.\u003cbr\u003e This revised edition has been comprehensively revised and supplemented to reflect the changing modern ecosystem, and the author's practical experience and technical insight have been incorporated to create a more in-depth and practical guide.\u003cbr\u003e Beyond conceptual learning, you will develop the mindset necessary for development and operations, and be able to apply container technology in practice.\u003cbr\u003e\u003cbr\u003e A friendly and practical guide for all developers, from beginners to practitioners, who want to learn container technology properly.\u003cbr\u003e Take your first step on your container technology journey with this book!\u003cbr\u003e\u003cbr\u003e Key Contents\u003cbr\u003e ● Concepts, structure, and execution principles of containers and Docker \u003cbr\u003e● Practice building and running Docker images, and port forwarding\u003cbr\u003e ● Configuring and running multiple containers using Compose\u003cbr\u003e ● Network connection, mounting, and secret management between containers\u003cbr\u003e ● Building a Docker-based web application and API server\u003cbr\u003e ● Setting up a real-world MySQL data store and migrator container\u003cbr\u003e High-availability operation and scaling strategy through Kubernetes\u003cbr\u003e ● Practical skills such as security settings, volumes, and log collection in the operating environment \u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\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\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\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e GOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate of issue:\u003c\/strong\u003e May 29, 2025\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePage count, weight, size:\u003c\/strong\u003e 624 pages | 1,192g | 188*245*30mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791194587279 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\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\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\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\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\/en\/products\/138196","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}