Container Technology Wiki
Docker Containers
- Docker 101
- Basic Docker Operations
- Docker Administration
- Docker Security Resources
- Docker OS Interaction
- Docker With Other Tools
- Docker API
- Docker Compose
Kubernetes Guide
- Kubernetes 101
-
Kubernetes Architecture
- Kubernetes Ecosystem
- Kubernetes Nodes
- Kubernetes Pods
- Kubernetes Controllers and Control Plane
- Kubernetes DaemonSets
- Container Runtime Interface
- Working with Containers in Kubernetes
- Working with Images in Kubernetes
- Workloads in Kubernetes
- Kubernetes Services
- Kubernetes Jobs
- Kubernetes and Microservices
- Kubernetes Operators
- Kubernetes Persistent Volumes
- Kubernetes Advantages and Use Cases
-
Kubernetes Operations
- Installing Kubernetes
- Kubernetes Configuration
- Kubernetes Monitoring
- Kubernetes Debugging and Troubleshooting
- Kubernetes Load Balancing
- Kubernetes Security
- Kubernetes Networking
- Kubernetes Storage Management
- Kubernetes in Production
- Working with Kubernetes Ingress
- Kubernetes Security Best Practices
- Managing Kubernetes with Kops and Kubeadm
- Kubernetes Secrets
- Kubernetes Autoscaling
- Kubernetes ConfigMap
- Kubernetes Namespace
- Kubernetes Authentication
- Kubernetes Vault
- CIS Kubernetes Benchmark
- Kubernetes Cluster
- Kubernetes as a Service
- Managed Kubernetes
- Kubernetes Distributions
- Enterprise Kubernetes
Container Basics
- Container Architecture
- Advantages of Containers
- Container Challenges
- Containers and IT Infrastructure
- Enterprise DevOps
- eBPF
- eBPF Linux
Containers Ops
- Container Security Management
- Container Deployment
- Container Monitoring
- Container Automation
- Container Multitenancy
- Container Backup and Disaster Recovery
- Prometheus Monitoring
Container Security
- Container Security Best Practices
- Containers for DevSecOps
- Container Vulnerabilities and Threats
- Container Vulnerability Scanning
- Container Secrets Management
- Container Access Control
- Container Audits and Compliance
- Application Whitelisting
- Zero Trust Networks
- Network Segmentation for Containers
- Container Isolation
- Open Source Security Tools for Containers
- Open Source Vulnerability Scanner
- Open Source Security Tools
- Container Security Tools
Cloud Native Computing Foundation
- AWS EC2 Security
- Cloud-Native Applications
- Cloud-Native Architecture
- Cloud Native AWS
- Cloud Native Development
- Cloud Native Infrastructure
- Cloud Native Security
- Envoy Proxy
- Harbor Kubernetes
- Open Policy Agent
- Oracle Cloud Security
- SaaS Cloud Security
- Security Issues in Cloud Computing
- SPIFFE
- VMware Tanzu
Serverless Computing
- Serverless Architecture
- AWS Lambda
- Azure Functions
- Google Cloud Functions
- Serverless Security
- On-Premises Serverless Platforms
- Function as a Service - FaaS
- Knative
- Serverless vs Containers
Container Platforms
- Containers and Cloud Computing
- Container Operating Systems
- Red Hat Openshift
- Pivotal Container Service
- Multi-Cloud Strategy
- Kubernetes vs Cloud Foundry
- CWPP
Other Container Engines
Kubernetes Alternatives
Container Community and Events
- Container Technology Wiki
- Docker Containers
- Docker 101
- Docker Deployment
Docker Deployment
Learn about deploying Docker: microservices architecture, orchestration tools, Service Mesh for networking, security concerns, and more.
In this page: everything you need to know about deploying Docker.
It’s very easy and quick to get started with Docker on your laptop. It takes a few minutes to download a container image and spin up a new container from it locally. What starts out so simple gets complicated as you scale to hundreds of containers, and want to deploy these containers into production. All of a sudden you need to think of how to execute all the tasks related to container management, how to transition to a microservices architecture, and how to secure containers in production.
Transition to Microservices
The switch from Docker as an experiment to Docker in production is largely dependent on your organization’s state. Many startups are cloud-native, and for them, running their apps in Docker in production probably happened from day one. But for most SMBs and enterprises, there’s a need to have backward compatibility to support legacy applications and tools that are still in use and are essential to the organization’s day-to-day activities. In these cases, you can’t just run an entire legacy application in a Docker container. Instead, you need a plan to modernize your architecture over time, and in the process move to containers gradually.
From a monolithic application, your goal is to move to a microservices architecture, which allows you to manage your application as a collection of interrelated services that can be managed and deployed separately from each other. This process of decomposing your application starts with peripheral services that are easy to branch out, then moves to the core parts of the application.
Use an Orchestration Tool
The next step is to use a powerful orchestration tool like Kubernetes. With the many moving parts of a dynamic Docker stack, a container orchestration platform is able to provide a layer of abstraction between the containers and the infrastructure that powers them.
Kubernetes is a powerful tool that automates and simplifies the creation and management of container resources. It has been going through rapid evolution and recent updates like role-based access control (RBAC), and secrets encryption are making it even more capable of running production workloads.
There are other orchestration tools like Swarm and Mesos, but Kubernetes is winning this battle because of its extensibility, long feature list, and large open source community. As you look to take Docker into production, an orchestration tool like Kubernetes is a must-have.
Adopt the Service Mesh
When you have tens or hundreds of microservices to manage in production, it’s very important to ensure they can communicate with each other. In legacy applications, communication was simple as it was between different parts of the same service. But with microservices apps, communication is complex as each service needs to talk to multiple other services to perform common tasks.
The service mesh is emerging as the default method for Docker networking container in production. It’s aptly called a mesh because the various connections between services are so complex, it creates a mesh pattern that may seem chaotic, but actually is necessary for normal functioning of a microservices application.
Tools like Linkerd and Istio are making great progress in how the service mesh is managed.Linkerd provides a consistent data plane for inter-service communication and Istio acts as the control plane for this mesh.
Additionally, tools like Project Calico are segmenting these networks using a policy-based approach. Rather than having a single peripheral firewall, Calico enables micro-firewalls around each service. This way, even if one service is compromised the other services are still protected by their firewall. At the scale of Docker, this type of container-aware security is essential.
Take an Integrated Approach to Security
Container security is perhaps the most important concern for organizations running Docker in production. This is because containers are completely different from traditional VMs. They can’t be adequately secured with a Docker-provided security tool, as Docker itself doesn’t have a hold on the entire container ecosystem. Instead, you need to take a best-of-breed approach to integrate specialist tools that excel in a particular aspect of container security and ensure segregation of duties between those who create and run containers on the one hand, and those who create, monitor and enforce security policy on the other.
The first step is to understand how Docker differs from a VM, and what this means for security. Docker inherits many kernel-level security features from Linux. This includes features like namespaces and cgroups which restrict a container’s access to its neighboring containers and limit its use of system resources.
A level above that, you need to monitor and control the usage of container images. This requires scanning of images downloaded from a registry like Docker Hub. You ideally want to allow only official and vetted images to be downloaded and shared within your organization. Access and permission control needs to be monitored to ensure only those who need access to a container have it, and others don’t. The principle of least privilege is paramount here. The CIS Docker benchmark is a great standard to measure how secure your system is as it covers many aspects of securing containers in production.
Along with these efforts, you need a dedicated container security tool that can automatically track violations and concerns across your Docker stack end-to-end. Aqua Security is one such platform that delivers threat detection during runtime and is able to spot intrusions or vulnerabilities from within before they escalate and cause large-scale damage.
In conclusion, running Docker in production is a very attractive proposition, but there are many ways it can go wrong. But by following the right approach and focussing on important aspects like application architecture, container orchestration, container networking, and container security you can enjoy the benefits of Docker without risking its potential pitfalls. As we move into a world of increasingly Dockerized applications, having the right approach and tools will give you the edge when running Docker in production.
Additional Resources
- What is a microservices architecture?
Martin Fowler explains what’s new about microservices and why you should transition to it from a legacy application.
- How is a service mesh different from an API?
It’s easy to confuse the two, but this is a useful read to understand how APIs perform a similar yet different function from a service mesh.
- How is Linkerd different from Istio?
They both enable the modern container service mesh, and they work together well, but they are different from each other.
Further Reading
- Docker 101
- Docker Containers vs. Virtual Machines
- 100 Best Docker Tutorials
- Docker Architecture
- Docker Registries 101
- Docker Images 101
- Docker Security - Risks, Benefits and 8 Best Practices
- Docker Tools
- Docker Alternatives - Rkt, LXD, OpenVZ, Linux VServer, Windows Containers
- Docker Swarm 101
- Docker vs. Kubernetes - 8 Industry Opinions
- Docker Networking 101
- Docker in the Cloud
- Docker in Production
- Docker Deployment
- Basic Docker Operations
- Docker Administration
- Docker Security Resources
- Docker OS Interaction
- Docker With Other Tools
- Docker API
- Docker Compose
Get updates on container technology

