Overlay Network Encryption in Docker
How Docker Swarm quietly builds a private, encrypted tunnel system across every machine in your cluster — and why that matters even if you've never typed the word "VXLAN" before.
Imagine you run a small courier company. Every day, dozens of vans move between three warehouses scattered across a city, carrying boxes back and forth. Now imagine that anyone standing on the street with the right equipment could open those vans mid-drive and read what’s inside. That is roughly what unencrypted network traffic between servers looks like to anyone who can tap the wire — a switch, a cloud provider’s hypervisor, a misconfigured router, or a malicious insider. Docker’s overlay network encryption is the equivalent of turning every one of those vans into an armored truck, with a lock that changes its combination automatically, without the drivers ever needing to know the new code. This article walks through exactly how that armored-truck system is built, piece by piece, starting from nothing and ending with you understanding what happens to a single packet of data from the moment an application sends it until it lands safely on another machine, possibly on the other side of the planet.
1Core Concepts
Before touching encryption at all, we need a solid mental model of what an “overlay network” even is, and why containers need one in the first place.
What problem are we even solving?
A container is a lightweight, isolated process running on a physical or virtual machine. When you run one container on one laptop, networking is trivial — it’s all happening inside a single operating system. The trouble starts the moment you have more than one machine. Say you have three physical servers, and you want a container running on Server A to talk to a container running on Server C, as if they were sitting right next to each other on the same local network — even though, in reality, they are separated by routers, firewalls, and possibly thousands of miles of fiber-optic cable. This is the exact problem that container orchestration platforms like Docker Swarm and Kubernetes had to solve, and the solution they landed on is called an overlay network.
Think of a company with offices in New York, London, and Tokyo, all connected to the public internet through their local ISPs. If the company wants every employee’s computer to behave as if it’s plugged into one giant office network — same shared printers, same internal chat servers, same file shares — it builds a Virtual Private Network (VPN) that “tunnels” private traffic through the public internet. An overlay network does the same thing for containers: it creates a private, virtual network that “overlays” on top of the real, physical network, making distant containers believe they’re neighbors on the same switch.
Why isn’t the tunnel encrypted by default in every system?
Building the tunnel (routing packets correctly across machines) and securing the tunnel (making sure nobody can read or tamper with what’s inside it) are two separate engineering problems. Docker solved the routing problem first, using a technology called VXLAN, which we will unpack in the next chapter. Encryption is a deliberately optional layer on top of that routing, because encrypting and decrypting every single packet costs CPU cycles, and not every environment needs it — a cluster running entirely inside a single, physically secured data center rack has a very different risk profile than a cluster whose nodes are spread across three different cloud regions operated by three different providers.
“Overlay network” describes the plumbing that lets containers on different hosts talk to each other. “Overlay network encryption” is an optional security layer bolted onto that plumbing, which scrambles the contents of every packet so that anyone intercepting it mid-transit sees only meaningless noise.
The three ingredients that make this possible
Everything described in this article rests on three foundational ingredients working together:
A distributed control plane
A group of “manager” nodes that agree, at all times, on the current state of the cluster — which containers exist, which networks exist, and which encryption keys are currently valid.
A tunneling protocol
VXLAN, a way of wrapping an entire Ethernet frame inside a regular UDP packet, so it can travel across ordinary IP networks that know nothing about the “virtual” network hiding inside.
An encryption standard
IPsec, specifically its Encapsulating Security Payload (ESP) mode, which Docker uses to encrypt the VXLAN traffic itself before it ever leaves the host machine’s network interface.
Notice the layering: IPsec doesn’t encrypt your application’s data directly. It encrypts the VXLAN envelope that is already carrying your application’s data. This is a crucial distinction that will make the rest of this article click into place, so hold onto it.
2Architecture & Components
With the concepts in hand, let’s map out every moving part that participates in building and securing an overlay network.
Swarm mode: the orchestration layer underneath it all
Docker’s overlay network encryption only exists inside Swarm mode, Docker’s built-in clustering and orchestration system. When you initialize a swarm, one or more machines become manager nodes, responsible for making decisions about the cluster’s desired state, and any number of machines become worker nodes, responsible for actually running containers. Manager nodes talk to each other using a consensus algorithm called Raft, the same family of algorithm used by systems like etcd (which itself powers Kubernetes). Raft guarantees that even if some managers crash or lose network connectivity temporarily, the surviving managers still agree on a single, consistent version of the truth — including which encryption keys are currently active.
The gossip protocol: how workers learn what managers know
Worker nodes don’t participate in the Raft consensus directly — that would not scale well to hundreds or thousands of workers. Instead, control-plane information (like network topology and, critically, encryption keys) is spread across the cluster using a gossip protocol, conceptually similar to how a rumor spreads through an office: node A tells a few nearby nodes, those nodes tell a few more, and within a handful of rounds, everyone has the same information, without any single node having to talk to all the others directly.
flowchart TB
subgraph Managers["Manager Nodes - Raft Consensus"]
M1["Manager 1 (Leader)"]
M2["Manager 2"]
M3["Manager 3"]
end
M1 M2
M2 M3
M1 M3
M1 -- gossip control data --> W1["Worker Node A"]
M1 -- gossip control data --> W2["Worker Node B"]
W1 -- gossip relay --> W3["Worker Node C"]
W2 -- gossip relay --> W4["Worker Node D"]
style Managers fill:#111111,stroke:#dc2626,color:#ffffff
Fig. 1 — Managers agree on cluster state via Raft; workers learn that state through gossip relay, avoiding a single point of overload.
The core building blocks, named
VXLAN Tunnel Endpoint (VTEP)
A virtual network interface created on every host, responsible for wrapping and unwrapping VXLAN packets. Each host in the overlay network gets one VTEP per overlay network it participates in.
The ingress network
A special, built-in overlay network Docker Swarm creates automatically, used for routing traffic sent to a published port to whichever container is actually running the service, even on a different host.
Security Associations (SAs)
IPsec’s term for an agreed-upon set of encryption keys and algorithms between two specific hosts. Every pair of hosts communicating over an encrypted overlay network maintains its own SA.
The network driver: overlay
The specific Docker network driver (as opposed to bridge, host, or macvlan) that implements all of the above. Encryption is simply a flag you can turn on when creating a network with this driver.
Where the kernel comes in
An important, often-overlooked fact: Docker itself does not implement encryption in its own application code. Instead, it configures the Linux kernel’s own, battle-tested IPsec subsystem (via the xfrm framework) to do the encrypting and decrypting. This matters enormously for performance and trust — the kernel’s IPsec implementation is decades old, used by essentially every VPN product on earth, and runs extremely close to the network hardware, rather than in a slower, user-space application. Docker’s job is reduced to being an orchestrator: it generates the keys, distributes them to the right hosts, and tells the kernel’s IPsec engine, “encrypt everything moving between these two IP addresses on this VXLAN port.”
Overlay network encryption protects traffic between hosts, travelling across the physical or cloud network. It does not, by itself, encrypt traffic between two containers running on the same host, because that traffic never leaves the machine and never touches the VXLAN/IPsec path at all.
3Internal Working
Now we go one level deeper: what literally happens, step by step, when Docker turns on encryption for an overlay network.
Step one: key generation, not key invention
When you create an encrypted overlay network, the swarm’s leading manager node generates a symmetric encryption key — a single shared secret that both the sending and receiving host will use to scramble and unscramble data. This isn’t done casually; the manager uses a cryptographically secure random number generator, and the key itself is designed for use with the AES-256-GCM cipher, an industry-standard, authenticated encryption algorithm also used to protect, among other things, TLS connections for a large share of the modern web.
Picture a bank that mints a brand-new physical key every time it opens a new vault-to-vault armored delivery route, then securely couriers a copy of that exact key to both the sending and receiving branch — never to anyone else. That is what the manager node does electronically: it mints one shared key for one network, and distributes it only to the hosts that legitimately have containers on that network.
Step two: secure key distribution over the control plane
The key itself must never travel across the network in the clear. Docker solves this by piggybacking key distribution on the swarm’s own control-plane traffic, which is itself protected by mutual TLS (mTLS) — every manager and worker node in a swarm holds a unique cryptographic certificate, issued when it joins the cluster, and all manager-to-worker communication is authenticated and encrypted using those certificates. So the encryption key for your overlay network rides inside an already-encrypted channel to reach every host that needs it. This is a subtle but important point: the swarm’s control plane is always encrypted via mTLS, regardless of whether you turn on data-plane (overlay) encryption — data-plane encryption is a separate, opt-in decision layered on top.
CONTROL PLANE + DATA PLANE
OVERLAY NETWORK
Step three: the kernel configures a Security Association for every host pair
Once a host has the key, Docker instructs the Linux kernel’s IPsec subsystem to establish a Security Association with every other host it needs to talk to on that overlay network. Practically, this means: “for any VXLAN packet leaving this machine destined for host X on UDP port 4789, wrap it in an ESP header and encrypt the payload using this specific key before sending; for any incoming ESP packet from host X, decrypt it using this key before handing the inner VXLAN packet up to the networking stack.” This configuration happens automatically and invisibly — no administrator ever manually configures an IPsec tunnel the way they might for a traditional site-to-site VPN.
Step four: the actual encapsulation, encryption, and transmission
Here is the full technical picture, expressed as a sequence of wrapping steps, from the inside out:
- Original packet — the raw data your application sends (for example, an HTTP request from one microservice to another).
- Ethernet frame — the container’s virtual network interface wraps this in a standard Ethernet frame, as if it were on a normal local network.
- VXLAN encapsulation — the VTEP wraps that entire Ethernet frame inside a UDP packet (destination port 4789 by default), adding a VXLAN header that identifies which virtual network this traffic belongs to.
- IPsec ESP encryption — before this UDP packet leaves the physical network interface, the kernel’s IPsec engine encrypts its payload using AES-256-GCM and wraps it with an ESP header, which also includes an authentication tag to detect any tampering.
- Physical transmission — the now-encrypted packet travels across the real network — a switch, a router, the public internet, a cloud provider’s backbone — completely opaque to anyone intercepting it.
flowchart LR
A["App Data"] --> B["Ethernet Frame"]
B --> C["VXLAN + UDP Encapsulation"]
C --> D["IPsec ESP Encryption AES-256-GCM"]
D --> E["Encrypted Packet on the Wire"]
E --> F["Remote Host: IPsec Decrypt"]
F --> G["VXLAN Decapsulation"]
G --> H["Ethernet Frame Delivered to Container"]
Fig. 2 — The full encapsulation chain: application data is wrapped four times before it ever touches the physical wire, and unwrapped in reverse on arrival.
On the receiving host, this entire sequence runs in reverse: the ESP header is verified and decrypted, the VXLAN header is inspected to identify the correct virtual network, the inner Ethernet frame is extracted, and finally the original application data is delivered to the destination container — a process that, end to end, typically adds only a fraction of a millisecond of latency on modern hardware, thanks to CPUs that include dedicated AES instruction sets (AES-NI) built directly into the processor.
4Data Flow & Lifecycle
Let’s trace a single request across its entire lifecycle, and separately look at how keys themselves live and die.
Network creation
An administrator creates an overlay network with the --opt encrypted flag. The manager node generates and stores a symmetric key tied to that specific network.
Service deployment
A service is deployed and attached to the encrypted network. Docker schedules its containers (tasks) onto one or more worker nodes.
Key propagation
The manager pushes the network’s encryption key to every node that now has a task on that network, over the already-encrypted mTLS control-plane channel.
Security Association setup
Each participating host’s kernel configures IPsec Security Associations with every peer host that also has containers on this network.
Live traffic
Application traffic between containers is transparently encapsulated, encrypted, transmitted, decrypted, and delivered — with no code changes required in the application itself.
Automatic key rotation
By default, approximately every 12 hours, the manager generates a fresh key and rolls it out, briefly overlapping old and new keys so no traffic is dropped mid-rotation.
Node departure or network removal
When a container is removed, a node leaves the swarm, or the network itself is deleted, the corresponding Security Associations and keys are torn down and discarded.
Why key rotation exists at all
Every symmetric cipher has a theoretical amount of data it can safely encrypt under a single key before certain cryptographic guarantees start to weaken — a concept cryptographers call “key exhaustion.” AES-256-GCM is extremely robust, but good security hygiene doesn’t wait for a theoretical limit to become a practical one. Rotating keys on a schedule also limits the “blast radius” of a compromised key: if a key were somehow leaked, it would only be useful to an attacker for the remaining hours before the next scheduled rotation, rather than for the lifetime of the cluster.
During the rotation window, both the old and new keys are briefly valid simultaneously. This overlap means in-flight connections using the old key keep working while new connections start using the new key — applications never notice the switch happening underneath them.
Lifecycle at the packet level, one more time
It helps to zoom back out. Every single packet that crosses the encrypted overlay, from the very first one to the very last, follows the identical six-stage journey described in the previous chapter: original data, Ethernet framing, VXLAN encapsulation, IPsec encryption, physical transmission, and full reversal on arrival. What changes over the lifetime of the network is not this per-packet journey, but the key being used to protect it, and the set of hosts that are currently allowed to participate at all.
5Advantages, Disadvantages & Trade-offs
No engineering decision is free. Turning on overlay encryption is a trade — here is exactly what you’re trading.
Advantages
- Protects data in transit between hosts, even across untrusted or shared networks such as public cloud backbones.
- Requires zero application code changes — encryption happens entirely at the network layer, invisible to your services.
- Uses the Linux kernel’s mature, hardware-accelerated IPsec implementation rather than a custom, less-audited encryption path.
- Keys rotate automatically on a schedule, without operator intervention or service restarts.
- Helps satisfy compliance requirements (such as PCI-DSS or HIPAA) that mandate encryption of data in transit between systems.
Disadvantages & Trade-offs
- Adds CPU overhead on every host for encryption and decryption, which is only mostly (not entirely) offset by AES-NI hardware acceleration.
- Slightly reduces the effective payload size available to application data, because of the extra headers added at each encapsulation layer, occasionally requiring MTU tuning.
- Only protects host-to-host traffic — traffic between two containers on the same host is unaffected, so it doesn’t replace application-level (TLS) encryption for defense in depth.
- Only available for the
overlaynetwork driver in Swarm mode — it is not applicable to bridge networks or standalone Docker Compose setups without Swarm. - Troubleshooting connectivity issues becomes slightly harder, since packet captures on the wire now show only encrypted, opaque traffic.
When the trade genuinely favors turning it on
The calculus tips firmly toward enabling encryption whenever your swarm’s nodes are not all sitting behind the exact same, fully trusted physical network boundary — for example, nodes spread across multiple cloud availability zones, multiple data centers connected by a WAN link you don’t fully control, or any environment subject to regulatory data-protection requirements. In these cases, the modest CPU cost is a small price for closing off an entire category of network-level eavesdropping and tampering attacks.
When it’s reasonable to leave it off
If every node in your swarm lives inside a single rack, connected by switches you physically control, inside a data center with its own strict physical access controls, and your compliance requirements don’t explicitly demand transit encryption, the marginal security benefit may not justify the CPU overhead — particularly for extremely latency-sensitive, high-throughput workloads such as certain real-time trading or scientific computing systems. Even then, many teams still enable it as a defense-in-depth default, treating the performance cost as acceptable insurance.
Rule of Thumb
If you would encrypt data at rest on the disks these containers use, you should almost certainly also encrypt it in transit between the hosts running those containers — the two protections address different, equally real, attack surfaces.
6Security
This is the heart of the topic — what exactly are we defending against, and how well does the defense hold up?
The specific threats this feature addresses
Overlay encryption is a direct answer to network-level eavesdropping and tampering threats, sometimes grouped under the umbrella term “man-in-the-middle” attacks. Concretely, it defends against:
Passive wiretapping
Someone with access to a shared switch, a cloud provider’s underlying network fabric, or a compromised router silently copying and reading traffic as it passes through.
ARP or route spoofing
An attacker tricking network equipment into sending them a copy of traffic meant for someone else, by lying about network addresses.
Packet tampering
An attacker modifying data mid-flight — the ESP authentication tag in IPsec detects any such modification and causes the packet to be silently discarded.
Traffic replay
An attacker capturing a legitimate packet and resending it later to trick a system — IPsec’s sequence numbering detects and rejects replayed packets.
What it does not protect against
It’s just as important to be precise about the limits of this protection as it is to understand its strengths. Overlay network encryption does not protect against an attacker who has already gained a foothold inside a container or host on the network — at that point, the attacker is “inside the armored truck” and can see the same unencrypted, decrypted data any legitimate process on that host would see. It also does nothing to protect application-layer secrets that are poorly handled to begin with — hardcoded passwords, tokens logged in plaintext, or weak authentication between services are entirely separate problems that overlay encryption cannot solve.
The Mistake
Treating overlay network encryption as a complete security solution, and skipping application-level TLS between services because “the network is already encrypted.”
Why It’s Risky
Overlay encryption is one layer covering host-to-host transit only. A compromised container, a misconfigured service mesh sidecar, or same-host traffic all bypass it entirely, leaving you with no protection at those points.
The Better Approach
Treat overlay encryption as one layer of defense in depth, not a substitute for mutual TLS between services, secrets management, and least-privilege network policies.
Mutual TLS: the control plane’s own, always-on protection
It’s worth restating clearly: the swarm’s management traffic — the conversations managers and workers have about cluster state, scheduling decisions, and yes, encryption key distribution — is protected by mutual TLS at all times, from the moment you run the command to initialize a swarm. Every node authenticates every other node using X.509 certificates, automatically issued and automatically rotated by Docker’s built-in certificate authority. This means the key that unlocks your data-plane encryption is itself always delivered over an already-secure channel — there is no “bootstrapping problem” where the very first key exchange happens in the clear.
Because encryption keys are distributed to any node that legitimately joins the swarm, the security of the whole system still ultimately depends on controlling who is allowed to join as a worker or manager in the first place — guard your swarm join tokens the same way you would guard a root password.
Interviewer’s Corner
A question that comes up often in system design interviews: “Why does Docker use IPsec instead of just running everything over a full VPN mesh like WireGuard?” A strong answer notes that IPsec’s xfrm framework is already built into every Linux kernel Docker supports, requires no additional daemon or user-space process, integrates natively with the existing VXLAN data path Docker already uses for routing, and has decades of production hardening — making it the pragmatic, lowest-friction choice for a feature that needs to work identically across every supported Linux distribution.
7Monitoring, Logging & Metrics
You can’t operate what you can’t observe. Here’s how teams keep confidence that encryption is actually working as intended, day after day.
What “healthy” looks like
Because overlay encryption operates deep in the kernel’s networking stack, most application-level monitoring tools never directly see it — which is exactly the point of a transparent security layer. Operational visibility instead comes from a small number of specific signals.
| Signal | What it tells you | Where to look |
|---|---|---|
| Network inspect output | Confirms whether a given overlay network actually has encryption enabled | docker network inspect on any manager node |
| Kernel IPsec state | Shows active Security Associations and confirms encryption is actively being applied between specific host pairs | Kernel IPsec state tables (ip xfrm state) on each host |
| Node connectivity events | Flags nodes that have dropped out of the swarm, which would also drop their Security Associations | Swarm node status and cluster event logs |
| Service task logs | Reveal application-level connectivity failures that might actually be caused by an underlying encryption/MTU mismatch | Container and service logs on affected hosts |
| CPU utilization per host | Surfaces unexpectedly high encryption overhead, especially on hosts lacking AES-NI hardware support | Standard host-level resource monitoring |
Why encrypted traffic complicates traditional packet capture
Teams used to running a packet-sniffing tool to debug connectivity issues will notice something important the first time they try it on an encrypted overlay network: the captured packets show only opaque, encrypted ESP payloads — you can see that two hosts are talking, and roughly how much data is flowing, but not what is actually being said. This is, again, precisely the intended behavior, but it does mean troubleshooting workflows have to shift toward the kernel’s own IPsec state and Docker’s network metadata, rather than reading raw packet contents.
Monitoring an encrypted overlay network is a bit like a postal inspector checking that a fleet of sealed, tamper-evident mail trucks is running on schedule. The inspector can confirm trucks are departing, arriving, and haven’t been tampered with — but cannot, and should not, be able to open a sealed truck to read the letters inside just to check that the route is working correctly.
Practical operational checklist
- Periodically confirm that networks intended to be encrypted still show the encrypted flag set — configuration drift during network re-creation is a real, if uncommon, risk.
- Track key rotation events over time to confirm rotation is happening on schedule, rather than silently failing.
- Baseline CPU usage before and after enabling encryption on production-representative traffic, so any future spike is easy to recognize as abnormal.
- Alert on any unexpected drop in the number of active Security Associations, which can indicate a node losing connectivity or falling out of the swarm unexpectedly.
8Design Patterns & Anti-patterns
Patterns that experienced platform teams gravitate toward, and traps that trip up newcomers.
Encrypt by default, exempt deliberately
Start every new overlay network with encryption enabled, and only disable it for a specific, documented, latency-critical service where the trade-off has been explicitly evaluated — rather than the reverse.
Network segmentation by trust zone
Create separate overlay networks for services with different sensitivity levels (for example, payment processing versus static asset caching), so encryption and access policy can be tuned per zone rather than applied uniformly and coarsely.
Defense in depth
Layer overlay encryption underneath application-level mutual TLS between services, so that a failure or misconfiguration in one layer does not fully expose traffic.
Mixing encrypted and unencrypted paths for one service
Attaching the same service to both an encrypted and an unencrypted overlay network without a clear reason creates confusing, inconsistent security guarantees that are hard to reason about and audit later.
The “trust the cloud provider” anti-pattern
A particularly common trap is assuming that because a cluster runs entirely inside one cloud provider’s virtual private network, overlay encryption is redundant. This overlooks that a VPC boundary protects against outside attackers, but does very little against a misconfigured security group, a compromised neighboring workload with unexpected network access, or the cloud provider’s own internal infrastructure issues. Overlay encryption is a control you own and verify yourself, independent of any provider’s shared-responsibility promises.
The Pattern
Tag overlay networks explicitly by sensitivity level in their naming convention (for example, prefixing with secure-) and enforce, via CI/CD pipeline checks, that networks matching that convention are always created with encryption enabled.
Why It Works
It turns a manual, easy-to-forget security decision into an automated, self-documenting guarantee that survives staff turnover and doesn’t rely on any individual engineer remembering the rule.
9Best Practices & Common Mistakes
Concrete, field-tested guidance for anyone about to flip the switch on a real cluster.
Best Practices
- Enable encryption when creating a network rather than trying to add it afterward — some network settings cannot be changed on an existing network without recreating it.
- Test MTU-sensitive applications carefully; the extra VXLAN and IPsec headers reduce the usable payload size per packet, and large, un-fragmented packets can silently fail without a proper MTU adjustment.
- Ensure every node has AES-NI hardware acceleration available (virtually all modern server and cloud CPUs do) before assuming CPU overhead will be negligible.
- Document which networks are encrypted and why, as part of standard infrastructure-as-code and architecture documentation.
- Combine overlay encryption with strict control over swarm join tokens, since any node that joins the swarm becomes trusted to receive encryption keys.
Common Mistakes
- Assuming encryption is on by default — it is explicitly opt-in per network and must be requested at creation time.
- Forgetting that same-host container traffic is unaffected, and mistakenly believing all inter-container traffic is protected everywhere.
- Ignoring MTU-related packet loss symptoms and misdiagnosing them as an application bug rather than a network-layer fragmentation issue.
- Leaving old, unused swarm join tokens valid indefinitely, widening the pool of machines that could potentially join and receive sensitive keys.
- Never validating, in a staging environment, that failover and key rotation actually behave as expected under real load before relying on them in production.
Before declaring an encrypted overlay network “production ready,” deliberately kill a manager node during active traffic and confirm both connectivity and key rotation continue to function correctly across the remaining managers.
10Real-world & Industry Examples
How this pattern shows up, in spirit if not always in this exact implementation, across the industry.
Financial services platforms
Companies processing payment or banking data commonly run container clusters spanning multiple availability zones or even multiple cloud regions for resilience. Regulatory frameworks in this space frequently mandate encryption of data in transit between systems, making overlay network encryption a natural, low-friction way to satisfy that requirement across an entire fleet of microservices without touching application code.
Healthcare technology providers
Organizations handling patient data under regulations such as HIPAA in the United States must demonstrate that data moving between systems is protected. Encrypted overlay networks give platform teams a defensible, auditable answer to “how is traffic between our services protected on the wire” that doesn’t depend on every individual development team correctly implementing TLS in every service.
Multi-cloud and hybrid-cloud deployments
Netflix has spoken publicly about running infrastructure across multiple availability zones for resilience, and companies like Spotify have described running workloads across hybrid environments spanning owned data centers and public cloud. In any architecture where nodes are not all behind a single, fully trusted network boundary, encrypting inter-node traffic becomes a baseline expectation rather than an optional extra — whether achieved through Docker’s built-in overlay encryption, a service mesh, or both layered together.
IN A RESILIENT CLUSTER
IN APPLICATIONS
COVERED WHEN ENABLED
The common thread across all of these examples is not any single company’s specific configuration, but the underlying principle: as soon as a system’s trust boundary extends across more than one physically secured location, encrypting the traffic that crosses that boundary stops being optional and starts being table stakes.
11Frequently Asked Questions
overlay network driver, which only exists in Swarm mode. Standalone Docker Compose setups without Swarm use different network drivers that don’t support this feature.12Summary and Key Takeaways
What to remember
- Overlay networks let containers on different physical hosts communicate as if they were on the same local network, using VXLAN to tunnel Ethernet frames inside ordinary UDP packets.
- Encryption is opt-in, applied per network at creation time, and implemented by configuring the Linux kernel’s mature IPsec subsystem — Docker itself doesn’t reinvent cryptography.
- Every packet gets wrapped through a clear chain: application data → Ethernet frame → VXLAN encapsulation → IPsec ESP encryption (AES-256-GCM) → the physical wire, and unwrapped in reverse on arrival.
- Keys rotate automatically, roughly every 12 hours by default, with overlapping validity windows so live connections are never disrupted.
- It protects host-to-host traffic only — same-host container traffic and application-level secrets require their own separate protections, like mutual TLS between services.
- The right default posture for most modern, multi-zone or multi-cloud deployments is encrypt by default, treating the modest CPU overhead as reasonable insurance against network-level eavesdropping and tampering.
- Robust monitoring shifts from reading raw packet contents to watching kernel IPsec state, network configuration, and node/cluster health signals, since encrypted traffic is, by design, opaque on the wire.