Docker-Based Continuous Delivery Practice: The EMC Containerized Delivery System
This article presents a comprehensive case study of the EMC containerized delivery platform, detailing how Docker, Kubernetes, and automated image building are leveraged to achieve continuous delivery for a large‑scale microservices project, and discusses the system’s architecture, image standardization, environment governance, and future enhancements.
With the rise of microservice architectures and DevOps, Continuous Delivery has become crucial for enterprises, aiming to reduce delivery costs and increase efficiency through short‑cycle, fine‑grained, automated releases.
The emergence of containers has greatly simplified automated delivery pipelines; this article uses the EMC (http://emc.baidu.com) containerized delivery system built during the Net Alliance One (Zero DSP) project as a case study to share Docker‑based continuous delivery practices.
The highlighted project adopts a microservice architecture comprising over 20 independent services, requiring extensive infrastructure support such as service build, delivery, governance, and elastic computing (see Figure 1).
Traditional delivery methods cannot meet rapid iteration demands in a microservice environment; Docker was chosen because it is lightweight compared to VMs, has low OS intrusion, follows the “Build, Ship, and Run Any App, Anywhere” principle, and enjoys a rich ecosystem.
EMC integrates Jenkins, Agile, and other CI tools to create a unified Docker container delivery system that addresses three core challenges: container packaging and delivery, flexible base‑image customization, and environment governance. The delivery flow (Figure 2) follows the Single Source of Truth principle, enabling one image to be deployed everywhere.
Standardizing Docker images involves a three‑layer structure (base OS layer, base image layer, application layer) that speeds up builds and reduces errors (see Figure 3).
Base‑image customization supports component‑based abstraction, built‑in common components (jdk, tomcat, supervisor), user‑defined components, and registration of existing images (Figure 4).
Automated image building uses Dockerfiles and the Remote API, allowing multiple hosts to form a dynamic resource pool; this decouples client and Docker daemon, eases host requirements, and improves scalability (Figure 5).
For environment governance, EMC integrates with the company’s JPaaS platform and uses Kubernetes for cluster management, service orchestration, and load balancing, while NodePort and BFE provide external exposure and traffic routing.
Container runtime management includes embedding agents in images for process monitoring and using environment variables for runtime configuration; the container lifecycle is illustrated in Figure 6.
EMC also offers one‑click environment deployment, namespace isolation, runtime management, and multi‑environment deployment from a single image (Figure 7).
In summary, the EMC system demonstrates a successful large‑scale Docker‑based continuous delivery implementation, supporting over 7 product lines with more than 9,000 image builds and deployments, and future work will address gray‑release, environment snapshot, and other advanced delivery features.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
