The Ephemeral Nature of Containers in Docker
Docker containers are built to be temporary: they can be stopped, deleted, and replaced at any moment, and whatever lived only inside them disappears with them. This guide explains what that means, what is lost, what survives, and how to design software that thrives on it.
Think about a hotel room. When you check in, the room is yours: you can unpack, move the chair, and leave a towel on the bed. When you check out, housekeeping resets everything, and the next guest arrives to a spotless room. Nothing you left behind stays. That is a perfect picture of a Docker container. It is a temporary room created from a fixed blueprint, and when it is removed, everything you changed inside it is wiped clean. The valuables you care about must be kept in the hotel safe, which in Docker is called a volume.
1What Does “Ephemeral” Mean?
Start with the word itself, because the whole idea hides inside it.
Ephemeral means short-lived or temporary. Something ephemeral is not meant to last. A soap bubble, a sandcastle near the waves, and a message that vanishes after being read are all ephemeral. When we say containers are ephemeral, we mean that a container is designed to be created quickly, used for a while, and discarded without regret.
This surprises many beginners. They start a container, install a tool inside it, save a file, and feel that the work is safe. Then the container is removed or replaced, and the tool and the file are gone. Nothing broke. The container simply did what it was designed to do.
A container is like a whiteboard in a meeting room. You can write all over it during the meeting, but at the end someone wipes it clean for the next group. If you want to keep the notes, you must take a photo or copy them into your notebook before leaving. In Docker, that notebook is a volume or an external service.
Ephemeral is a feature, not a flaw
It may sound like a weakness that containers forget things. In reality it is one of the biggest reasons for their success. Because a container can be thrown away and rebuilt from its image at any time, you always know exactly what you are running. There is no mystery about which manual changes were made last year by someone who has since left the team.
2A Quick Refresher: Image and Container
You cannot understand what disappears until you know what a container is made of.
A Docker image is a read-only template that contains an application and everything it needs. It is built from stacked layers, and it never changes once it is created. A container is a running instance of that image. When Docker starts a container, it places a thin writable layer on top of the read-only image layers. Every change the running program makes, such as creating a file, editing a setting, or installing a package, is written into that thin top layer.
graph TD
A["Image layer 1: base files"] --> B["Image layer 2: libraries and tools"]
B --> C["Image layer 3: your application"]
C --> D["Container writable layer: every change made while running"]
Image layers
Read-only, shared between containers, and permanent as long as the image exists.
Writable layer
Thin, private to one container, and removed when the container is removed.
Copy-on-write
When a program changes a file from the image, Docker copies it up to the writable layer first, and the change happens there.
Imagine a printed book with a clear plastic sheet laid over each page. You may write on the plastic with a marker, but the printed text underneath never changes. Remove the plastic sheet, and every mark you made vanishes, leaving the book exactly as it was. The plastic is the writable layer, and the book is the image.
3Why Docker Containers Are Ephemeral by Design
Temporary is not an accident. There are strong reasons behind it.
Repeatability
If every container starts fresh from the same image, then two containers made from it behave the same way. Nothing left over from an earlier run can change the result.
Speed of replacement
Starting a container takes seconds, so replacing a broken one is faster and safer than repairing it by hand. Fixing a container by hand takes time, and nobody records what was done.
Easy scaling
When a website becomes busy, you can start ten more identical containers. That only works if any container can be created from scratch and behave the same as the others.
Clean rollbacks
If a new version misbehaves, you remove its containers and start containers from the previous image. The old state returns instantly, because nothing was changed in place.
Security and hygiene
A container that lives for a short time has fewer chances to accumulate hidden changes, forgotten passwords, or slowly spreading problems. Regular replacement acts like a reset button.
Engineers often describe servers as pets or cattle. A pet has a name, is cared for by hand, and would be a disaster to lose. Cattle are numbered, identical, and replaceable. Containers are meant to be cattle.
4What Exactly Disappears?
A clear list helps you avoid nasty surprises.
Not everything in a container is equally temporary. Some things vanish the moment the program stops, and some vanish only when the container is deleted. Knowing the difference is the heart of this topic.
Files in the writable layer
Any file the application creates or changes inside the container’s own file system, unless it lives on an attached volume.
Manually installed software
Any package or tool you installed by hand after the container started.
Manual configuration edits
Settings changed by opening a shell and editing files inside the running container.
Local logs
The log records Docker keeps for that container are deleted with it, unless they were sent elsewhere.
Running processes and memory
Everything held in memory, such as caches, open connections, and unsaved work, is gone when the main process ends.
Identity details
The container ID, its name if not chosen, its numeric network address, and its computer name are different in a new container.
A database container is started with no volume attached. It runs for weeks, collecting real data. Then someone removes the container to upgrade it, and all the data disappears in a moment. This single mistake is behind a large share of Docker horror stories.
5What Survives and What Does Not: Stop, Restart, Remove
Stopping a container is not the same as deleting it.
This is the point where many people get confused. A container that has stopped still exists on disk, including its writable layer. So stopping and starting the same container does not lose files. It is only when the container is removed, or replaced by a new one, that the writable layer is deleted.
stateDiagram-v2
[*] --> Created
Created --> Running: start
Running --> Exited: stop or program ends
Exited --> Running: start or restart again
Exited --> Removed: remove
Running --> Removed: force remove
Removed --> [*]
| Event | Files in the Writable Layer | Running Processes and Memory | Data in a Volume |
|---|---|---|---|
| Stop then start the same container | Kept | Lost, the program restarts from the beginning | Kept |
| Pause then unpause | Kept | Kept, they are only frozen | Kept |
| Remove the container | Deleted | Gone | Kept, if it is a named volume |
| Replace with a new container from the image | Starts empty again | New process | Kept, if the same volume is attached again |
| Delete the image | Not possible while a container still uses it, unless forced | Not applicable | Kept |
| The host machine restarts | Kept, unless the container is removed | Lost, unless a restart policy starts it again | Kept |
Even though files survive a stop, relying on that is risky. Someone may clean up stopped containers, a script may recreate the container, or a deployment tool may replace it. Treat the writable layer as temporary at all times.
Auto-remove containers
For one-time jobs, Docker can be told to remove the container as soon as it exits. This keeps the machine tidy, and it makes the temporary nature of the container explicit from the start.
6Ephemeral, Immutable, and Stateless: Three Related Words
People use these words together, but each means something different.
Ephemeral
Short-lived and disposable. The container can vanish at any time, and anything only inside it vanishes too.
Immutable
Not changed after creation. You do not patch a running container; you build a new image and replace the container.
Stateless
The application keeps no important data locally. Any copy can serve any request, because the real data lives elsewhere.
Picture a coffee shop chain. Every cup is thrown away after use, which is ephemeral. Every shop follows the same fixed recipe and layout, which is immutable. Any cashier can serve any customer because the order details are stored in a shared system, not in the cashier’s head, which is stateless.
| Idea | What It Protects You From | What You Must Do |
|---|---|---|
| Ephemeral | Long-lived hidden changes and mystery servers | Be ready for containers to disappear at any moment |
| Immutable | Untracked manual edits and drifting environments | Change the image or configuration, then replace the container |
| Stateless | Losing data or sessions when one container dies | Keep data in volumes, databases, or external services |
These ideas work as a team. Because containers are ephemeral, they should be immutable, so replacements are identical. Because replacements happen often, the application should be stateless, so nothing valuable is lost.
7Keeping Data Safe: Volumes and Mounts
The safe deposit box for everything that must outlive a container.
Docker gives you ways to store data outside the container’s writable layer, so that removing or replacing the container does not touch it. There are three main choices, and each has its best moment.
Volume
Storage created and managed by Docker, kept outside any container. It survives removal and can be attached to a new container later. The best choice for databases and other important data.
Bind Mount
A folder from the host computer shared straight into the container. Excellent for development, because edits appear instantly, but it depends on the host’s folder layout.
Memory Mount
Storage kept only in memory and never written to disk. It is deliberately ephemeral, perfect for temporary or sensitive scratch files.
flowchart LR
C1["Container v1"] -->|"writes data"| V["Volume: lasting storage"]
C1 -.->|"removed and replaced"| C2["Container v2"]
C2 -->|"attaches same volume"| V
V --> D["Data is still there"]
A volume is like a storage unit that you rent separately from your apartment. You can move out of one apartment and into another, and your belongings in the storage unit are untouched.
If a volume is created without a name, Docker gives it a long random name. It survives the container, but nobody remembers which one belongs to which application. Always give important volumes clear names.
Volumes are not forever unless you protect them
Volumes outlive containers, but they can still be deleted, either deliberately or by an overeager cleanup command that removes anything not currently attached. Back up important volumes, and review what a cleanup will delete before agreeing to it.
8Ephemeral Identity: Names, IDs, and Network Addresses
Even the container’s address is temporary.
Each new container receives a fresh ID and, on a standard network, a numeric network address handed out by Docker. If you replace a container, the new one is a different object with different identity details. Software that stores or depends on the old address will fail to find it.
Do not hard-code addresses
If your web container is configured to talk to a database at a specific numeric address, it will break the day the database container is recreated and receives a new address.
Use names on a shared network
On a user-created network, Docker offers built-in name lookup. Your web container can simply ask for the database by name, and Docker finds whichever container currently has that name.
Give stable names to important containers
A meaningful name, such as “shop-database”, stays the same while the container behind it changes, so connections stay simple and reliable.
sequenceDiagram
participant W as Web container
participant N as Docker network name lookup
participant D1 as Database container v1
participant D2 as Database container v2
W->>N: where is the database
N-->>W: address of v1
W->>D1: connect and work
Note over D1,D2: v1 is removed and v2 starts with a new address
W->>N: where is the database
N-->>W: address of v2
W->>D2: connect and work
A phone contact list lets you call “Mom” without knowing her number. If she changes her number, you only update the list, and every call still works. Names on a Docker network do the same job for containers.
9Ephemeral Logs and Configuration
Two more things that must not live only inside the container.
Logs
Docker collects what the main process writes to its standard output and error streams and stores it alongside the container. Once the container is removed, those records are gone. If a container crashes and is replaced automatically, the evidence of why it crashed can disappear with it.
The answer is to send logs to a central place while the container is still alive. Then the story of what happened survives even if every container involved has been deleted.
Configuration
Settings that are typed into a running container by hand are lost when it is replaced. Settings should instead be supplied from outside when the container starts. They can come from environment values, mounted configuration files, or, in cluster mode, from dedicated config and secret objects. This way the same image can run in testing and in production, only with different values passed in.
Central log system
A searchable store that keeps records after containers vanish.
Environment values
Small settings passed in at start, kept in a project file rather than in someone’s memory.
Mounted config files
Configuration kept outside the container and attached when it starts.
Secret handling
Passwords and keys delivered at run time, never baked into the image or typed into a container by hand.
Opening a shell inside a container and editing a file may solve the problem for now, but it is a fix with an expiry date. The next replacement will bring the problem back. Put the change into the image or the configuration instead.
10The Benefits of Being Ephemeral
Why so many teams welcome the disappearing act.
Advantages
- Every deployment starts from a known, clean state
- Problems from hidden manual changes cannot pile up over months
- Broken containers are replaced in seconds, not repaired for hours
- Scaling is simple, since any container can be cloned from the image
- Rollbacks are quick, because old images and containers can return instantly
- Test runs are reliable, since each one begins with a fresh environment
Disadvantages / Trade-offs
- Data stored in the wrong place is lost without warning
- Beginners must learn to plan storage, logs, and configuration up front
- Investigating a problem is harder once the container is gone
- Stateful software such as databases needs extra care
- Applications not designed for it may break when a container restarts
Fresh environments for testing
A test suite can start a new database container, run its checks, and delete the container afterwards. Every run begins from exactly the same empty state, so results are trustworthy.
Safe experimentation
You can try a new tool by starting a container from its image, poking around, and deleting it. Your computer stays clean, and mistakes cost nothing.
11Ephemeral Containers in Clusters and Orchestration
On large platforms, disappearing containers are a daily routine.
Systems such as Docker Swarm and Kubernetes take the ephemeral idea and use it as a strength. You describe how many copies of an application you want, and the system keeps that promise. If a container fails, a machine dies, or an update is released, the platform simply creates new containers to replace the old ones.
Self-healing
A container crashes. The platform notices that fewer copies are running than requested and starts a fresh one, often within seconds.
Rolling updates
To release a new version, the platform starts containers from the new image and gradually removes the old ones, so the application stays available.
Scaling up and down
When demand rises, extra containers are created. When it falls, they are removed. No one edits any container by hand.
Moving between machines
If a machine is being repaired, its containers are removed there and recreated on other machines. The application keeps running.
flowchart TD
W["Wanted: 3 copies of the web container"] --> C1["Container A"]
W --> C2["Container B"]
W --> C3["Container C"]
C2 -->|"crashes"| X["Removed"]
X --> N["New container B2 created automatically"]
N --> W
A hospital keeps a fixed number of nurses on every shift. If one calls in sick, a replacement is called in immediately. The ward never runs short, and nobody tries to keep the missing nurse at work while ill.
This automatic replacement only works smoothly if the application keeps nothing precious inside each container. If every container held unique data, replacing one would lose that data.
12Designing Stateless Applications
The winning strategy: keep state out of the container.
State means anything the application must remember: user accounts, shopping baskets, uploaded pictures, login sessions, and progress on a long job. In a stateless design, this information lives in dedicated places outside the containers, so that any container can be destroyed without loss.
| Kind of State | Where It Should Live | Why |
|---|---|---|
| Business data such as orders and accounts | A database, using a volume or a managed service | Must survive every container change |
| Uploaded files and pictures | A shared volume or object storage service | Every container must be able to reach them |
| Login sessions | A shared cache or session store | Users stay signed in even when their container is replaced |
| Temporary work files | A memory mount or the writable layer | They are safe to lose |
| Settings | Environment values, config files, or secrets | Kept outside the image and easy to change |
| Logs and metrics | A central logging and monitoring system | Records outlive the containers that produced them |
Shared session store
If the login information of a visitor sits inside one web container, replacing that container logs the visitor out. Storing sessions in a shared cache means any web container can continue the visit.
Shared upload storage
If pictures are saved inside whichever container handled the upload, other containers cannot see them. Saving them in shared storage lets every container serve them.
A good bank teller does not keep customer balances in their head. Every teller looks up the balance in the bank’s central system, so if one teller goes home sick, any other teller can continue serving the same customer without a problem.
13What About Databases and Other Stateful Software?
Some programs exist to hold data. Can they live in ephemeral containers?
Yes, but with care. A database can run in a container, as long as its data files are stored on a volume, and the volume is protected and backed up. The container becomes a disposable engine, and the volume holds the precious content. If you replace the engine with a newer version, it simply attaches the same volume and carries on.
Attach a named volume
Give the database’s data folder a named volume so that removing the container never removes the data.
Back up regularly
Copy the data to a safe place on a schedule, and practice restoring it, because a backup that has never been tested is only a hope.
Stop cleanly
Give the database enough time to finish writing when it is stopped, so files are not left half-written.
Upgrade by replacing
Start a container from the newer image and attach the same volume, following the database’s own upgrade guidance.
Many teams prefer a managed database service from a cloud provider for important production data, leaving containers for the stateless parts. This keeps the hardest state-keeping work in the hands of specialists. Containers remain excellent for databases in development and testing.
14Where Data Goes: A Complete Data Flow
Follow a single piece of data and see where it ends up.
flowchart TD
APP["Application inside the container"] --> Q{"Where is the data written?"}
Q -->|"Writable layer"| W["Deleted when the container is removed"]
Q -->|"Named volume"| V["Kept until the volume is deleted"]
Q -->|"Bind mount"| B["Kept in a host folder"]
Q -->|"Memory mount"| M["Gone when the container stops"]
Q -->|"External database or service"| E["Kept and managed outside Docker"]
| Where the Data Is Written | How Long It Lasts | Typical Use |
|---|---|---|
| Container writable layer | Until the container is removed | Scratch files you can afford to lose |
| Named volume | Until someone deletes the volume | Databases and important application data |
| Bind mount | As long as the host folder exists | Development, sharing files with the host |
| Memory mount | Until the container stops | Sensitive or temporary data |
| External service | Managed by the service | Production data, sessions, uploads |
The single most useful habit is to ask, before starting any container, “Where will this program write, and does that data matter?” If it matters, make sure the answer is anything other than the writable layer.
15Security Angles of Ephemeral Containers
Being temporary helps security, but it also adds a few duties.
A natural reset
Replacing containers regularly wipes away anything an attacker may have quietly changed inside a running container, since the new one starts clean from the image.
Read-only file systems
A container can be started with its file system marked read-only, plus a small writable memory area for temporary files. This makes tampering harder and makes the ephemeral design explicit.
Secrets kept out of the container’s disk
Secrets delivered through memory-based storage never touch the disk, so they vanish as soon as the container does.
Evidence can vanish too
If a container is compromised and then deleted, investigators lose the very evidence they need. Central logging and monitoring keep a record outside the container.
Frozen images grow old
Replacing a container from the same old image does not add security fixes. Rebuild images regularly from updated bases so that each fresh container is also a patched one.
A container that lives for only an hour can still be attacked in that hour. Ephemeral design reduces risk over time, but it does not replace good practices such as running as an ordinary user, limiting powers, and scanning images.
16Monitoring and Investigating Short-Lived Containers
You cannot log into something that is already gone, so prepare in advance.
Central logging
Ship every container’s messages to a store that outlives them, so a crash can be explained after the container is gone.
Metrics over time
Record processor, memory, and network use, so trends remain visible even after individual containers come and go.
Health checks
Small regular tests that reveal a container that is running but stuck, so it can be replaced quickly.
Event history
A timeline of containers being created, stopped, killed, or restarted, which helps explain sudden changes.
Exit codes
The number a container leaves when it ends, which hints at whether it finished normally, crashed, or was forcefully killed.
While a stopped container still exists, you can read its logs and inspect its settings. If a container keeps crashing, keep the failed one around long enough to investigate, rather than removing it instantly.
An airplane carries a black box, a recorder that stores flight information outside the moving parts of the plane. Central logs and metrics are the black box of your containers: they preserve the story even if the aircraft is lost.
17Design Patterns and Anti-patterns
Habits that work with the ephemeral nature, and habits that fight it.
Helpful patterns
Externalize state
Keep data, sessions, uploads, and logs outside the container, in places built to last.
Replace, do not repair
When something is wrong, fix the image or configuration and deploy fresh containers.
Configuration from outside
Pass settings in at start so one image serves every environment.
Read-only container with scratch space
Lock the container’s file system and give it only a small temporary writable area.
Graceful shutdown
Handle the stop signal so that the application finishes work and closes cleanly before disappearing.
Harmful anti-patterns
Problem
Storing important data only inside the container’s writable layer.
Why It’s Harmful
The moment the container is removed or replaced, the data disappears, often during a routine upgrade.
Correct Approach
Attach a named volume or use an external service for anything that must survive.
Problem
Treating a container like a long-lived server: logging in, installing tools, editing settings by hand, and never rebuilding.
Why It’s Harmful
The container becomes a fragile pet full of undocumented changes. Nobody can recreate it, and its loss becomes a crisis.
Correct Approach
Record every change in the image build or configuration, and replace the container to apply it.
Problem
Saving a hand-modified running container as a new image and using that as your official version.
Why It’s Harmful
The result cannot be explained or reproduced. Hidden files and mistakes are baked in, and nobody knows what is really inside.
Correct Approach
Write a Dockerfile that builds the image from a clean start, and keep it under version control.
Problem
Hard-coding another container’s numeric address in the configuration.
Why It’s Harmful
When that container is recreated, its address changes, and the connection breaks in a confusing way.
Correct Approach
Put containers on a user-created network and refer to each other by name.
18Best Practices and Common Mistakes
A short checklist for living happily with disposable containers.
Decide where data lives before you start
For every container, ask what it writes and whether that matters. Attach a volume or an external service for anything important.
Name your volumes
Clear names make it obvious which volume belongs to which application and prevent orphaned, mysterious storage.
Back up and test restores
A volume protects against container removal, not against deletion, corruption, or hardware failure.
Send logs and metrics elsewhere
Keep records outside the containers so you can investigate after they are gone.
Describe everything in files
Use a Dockerfile for the image and a project file for the running setup, so the whole environment can be rebuilt from text.
Handle stop signals
Let applications shut down cleanly, finishing writes and closing connections, since stopping is a routine event.
Practice replacing containers
Regularly delete and recreate containers in a safe environment. If it hurts, you have found a hidden dependency on state before it hurts in production.
Mistakes beginners often make
Stopping and starting the same container keeps its writable layer. The files vanish on removal, so do not confuse a restart with a recreate, and do not rely on either for important data.
Cleanup commands can remove stopped containers and, if asked, unused volumes. A volume with precious data can look unused when its container is temporarily gone. Always review the list before confirming.
Some images automatically create unnamed volumes. They survive removal of the container and pile up quietly, using disk space. Name the ones that matter and clean up the ones that do not.
When the host machine restarts, containers stop unless a restart policy brings them back. Choose a restart policy on purpose for long-running services.
19Ephemeral Containers in the Real World
Where the temporary nature earns its keep.
Continuous integration pipelines
Every code change triggers fresh containers that build, test, and vanish. Since each run starts from a clean state, results never depend on leftovers from a previous run.
Web applications behind a load balancer
Many identical web containers share the traffic. Any one of them can crash or be replaced during an update without visitors noticing, since the real data lives elsewhere.
Batch and scheduled jobs
Backups, reports, and data processing run as short-lived containers that start, finish, and disappear, using resources only while they work.
Developer environments
Developers start the services they need, work, and discard everything at the end of the day, or reset the whole environment when something goes wrong.
Large-scale platforms
Cloud and cluster platforms create and destroy huge numbers of containers automatically to match demand, replace failures, and roll out new versions. Companies such as Netflix and Spotify have publicly described container-based service architectures that rely on this replaceable design.
Security research and safe experiments
Suspicious files or unknown tools can be examined inside a throwaway container, which is then deleted, limiting the impact of anything unexpected.
| Situation | Ephemeral Approach | Result |
|---|---|---|
| A container behaves strangely | Replace it with a fresh one from the same image | Quick recovery, no mystery state |
| Releasing a new version | Start containers from the new image and remove the old ones | Clean deployment and easy rollback |
| A traffic spike arrives | Start extra containers | Capacity rises in seconds |
| Running a test suite | Use throwaway containers for the database and services | Repeatable, trustworthy tests |
20Frequently Asked Questions
Quick answers to what beginners ask most.
It means the container is temporary and disposable. Anything stored only inside it, such as files in its writable layer, is lost when the container is removed, and new containers always start fresh from the image.
No. A stopped container keeps its writable layer, so files remain when you start it again. The files are lost when the container is removed or replaced. Running processes and memory are lost on stop.
Store the data in a named volume, a bind mount to a host folder, or an external service such as a managed database. Data placed there lives independently of the container.
Not by default. Volumes are designed to outlive containers. They can still be deleted deliberately or by careless cleanup, so name them clearly and back up the important ones.
Docker assigns network addresses when containers are created, and a new container may receive a different one. Use container names on a user-created network instead of numeric addresses.
It is fine for investigation, but not as a permanent fix. Manual changes vanish when the container is replaced. Put the change into the image or the configuration and redeploy.
Yes, if its data files are stored on a protected, backed-up volume. Many teams use managed database services for production and containers for development and testing.
Ephemeral describes the container: it is temporary. Stateless describes the application design: it keeps no important data locally. A stateless application is what makes ephemeral containers safe to use.
Docker stores a container’s logs with the container. When the container is removed, so are its logs. Send logs to a central system so they outlive the container.
Quite the opposite when used well. Reliability comes from being able to replace any container quickly and identically, with data and settings kept safely outside.
Learn named volumes and backups, container networking and name lookup, restart policies, and then central logging. After that, explore orchestration, where ephemeral containers are replaced automatically.
21Summary and Key Takeaways
Docker containers are ephemeral by design. Each one is a temporary instance created from a permanent, read-only image, with a thin writable layer that is deleted along with the container. Running processes, memory, addresses, and identity details are temporary too. This is not a flaw but the source of Docker’s biggest strengths: repeatable starts, fast replacement, easy scaling, and clean rollbacks. To live happily with it, keep anything valuable outside the container, in named volumes or external services, send logs and metrics to central places, supply configuration from outside, and design applications to be stateless. Replace containers instead of repairing them, and your systems become simpler, safer, and easier to trust.
Key Takeaways
- Containers are temporary by design — they are created from an image, used, and discarded, and anything stored only inside them disappears with them.
- Stop is not remove — files in the writable layer survive a stop and restart, but they are deleted when the container is removed, and running processes and memory are always lost on stop.
- Volumes hold what must last — use named volumes, bind mounts, or external services for data, and back up anything important.
- Identity is temporary too — container IDs and network addresses change on recreation, so use names on user-created networks instead of numeric addresses.
- Keep state out of containers — put business data, sessions, uploads, logs, and configuration in dedicated places so any container can be replaced without loss.
- Replace, do not repair — fix the image or configuration and deploy fresh containers, instead of editing running ones by hand.
- Prepare for disappearance — use central logging, metrics, health checks, and graceful shutdown, so you can understand what happened even after the container is gone.