What Are Docker Objects?
Docker is built from a small family of things you create, name, connect, and delete: images, containers, volumes, networks, plugins, and a few cluster-level helpers. This guide introduces each one from zero and shows how they fit together.
Imagine a well-run kitchen. There are recipe cards, dishes being cooked right now, pantry shelves where ingredients are stored, and pathways that let cooks pass plates to each other. If you only knew the word “kitchen”, you would not understand how the meal gets made. You need the names of the parts and what each one does. Docker works the same way. When you use Docker, you are always creating, changing, or deleting a handful of named things, and those things are called Docker objects. Once you know them, the whole tool stops feeling like magic.
1What Does “Docker Object” Mean?
Start with the simple definition, then see why it matters.
A Docker object is any named thing that Docker creates and manages for you. When you build an image, you have created an object. When you start a container, you have created another. When you make a storage area or a virtual network, those are objects too. Each object has its own identity, its own settings, and its own life story from creation to removal.
Docker’s official documentation groups the main objects into a short list: images, containers, networks, volumes, and plugins. When Docker runs as a cluster, a few more objects appear, such as services, secrets, and configs. The word “object” is just a convenient label for “one of the things Docker keeps track of”.
Why learn the objects first?
Many beginners jump straight to commands and get lost. Every Docker command is really a request that does one of four things to an object: create it, look at it, change it, or delete it. If you know which object a command is talking about, you can guess what it will do. The objects are the nouns, and the commands are the verbs.
Think of a school. It has students, classrooms, lockers, hallways, and special clubs. Every rule the school makes is about one of these things. Docker objects are the students, classrooms, lockers, and hallways of the Docker world.
Every object can be looked up by an ID, a long automatically generated code, and most can also be given a friendly name. Names are easier for humans, while IDs are what Docker uses internally.
2Meeting the Whole Family
A quick tour before we go deep into each member.
Image
A read-only template holding an application and everything it needs. The recipe card.
Container
A running, isolated instance created from an image. The dish being cooked.
Volume
Docker-managed storage that outlives containers. The pantry shelf.
Network
A virtual connection between containers and the outside world. The hallway.
Plugin
An add-on that extends Docker, for example with new storage or network abilities. The special tool.
Services, Secrets, Configs
Extra objects used when many machines work together in Docker Swarm mode.
flowchart TD
IMG["Image - the template"] -->|"start from"| CON["Container - the running instance"]
VOL["Volume - lasting storage"] -->|"attached to"| CON
NET["Network - the connections"] -->|"joined by"| CON
PLG["Plugin - the add-on"] -.->|"extends"| VOL
PLG -.->|"extends"| NET
Look at the picture above. The container is the busy center of the family. It is born from an image, it may hold onto a volume for saving data, and it joins one or more networks to talk to others. Plugins sit in the background and extend what volumes and networks can do.
Picture a food truck. The recipe book is the image, the truck cooking right now is the container, the freezer bolted to the truck is a volume, the radio it uses to talk to other trucks is the network, and any special attachment, such as a smoker, is a plugin.
3Docker Images: The Templates
The first object you meet in any Docker journey.
What is an image?
An image is a read-only package that contains an application together with its libraries, tools, and settings. It is a frozen snapshot. You cannot run an image directly in the sense of changing it. Instead, you use it as a template to create containers.
Images exist so that software can be moved from one computer to another without the “it works on my machine” problem. Everything the program needs is already inside the package.
An image is like a cake mold combined with a pre-measured ingredient kit. You can bake many identical cakes from it, and the mold itself never changes.
Where do images come from?
Built from a Dockerfile
You write a text file listing the steps, such as which base to start from, which files to copy in, and what to run at start. Docker follows the list and produces an image.
Pulled from a registry
A registry is an online library of images. Docker Hub is the best-known public one. You download a ready-made image instead of building your own.
Created from an existing container
It is possible to save the state of a container as a new image. This works, but it is rarely recommended, because the result is hard to repeat and explain. A Dockerfile is clearer.
An image is not a running thing. If someone says “my image crashed”, they almost always mean their container crashed. The image is the template and stays untouched.
4Inside an Image: Layers, Tags, and Digests
Three ideas explain why images are efficient and how they are named.
Layers
An image is a stack of thin layers. Each instruction in the Dockerfile that changes files produces one layer. Layers are read-only, and Docker can share them between images. If two images begin with the same base, that base is stored on disk once, not twice.
graph TD
A["Layer 1: minimal operating system files"] --> B["Layer 2: language runtime"]
B --> C["Layer 3: application libraries"]
C --> D["Layer 4: your application files"]
D --> E["Writable layer: added only when a container starts"]
Faster downloads
When you pull an image, Docker only fetches layers you do not already have.
Build caching
If a step and everything before it has not changed, Docker reuses the saved layer instead of repeating the work.
Smaller disk use
Dozens of containers from the same image share the same read-only layers.
Names and tags
An image name usually has three parts: where it lives, what it is called, and a tag. The tag is a label, often a version like a number. A repository is the collection of all versions of one image name, and each version is told apart by its tag. If you leave the tag out, Docker assumes a tag called “latest”.
Digests
A digest is a long fingerprint calculated from the exact contents of an image. Tags can be moved to point to a newer build, but a digest never changes. If you need absolute certainty about what you are running, refer to the image by its digest.
| Identifier | Can it change over time? | Best used for |
|---|---|---|
| Tag | Yes, a publisher can move it to a new build | Human-friendly versions during development |
| Image ID | No, it identifies one image on your machine | Local reference and inspection |
| Digest | No, it is a fingerprint of the exact contents | Strictly repeatable production deployments |
“latest” is only a label, not a promise of newest or safest. Using it in production means your application can silently change the next time an image is downloaded.
5Docker Containers: The Living Instances
Where the action happens.
What is a container?
A container is a runnable instance of an image. When you start one, Docker takes the read-only layers of the image, adds a thin writable layer on top, gives the process its own private view of the system, and starts your application inside it.
A container is not a tiny computer. It is an ordinary process on the host that has been placed into an isolated space using features of the Linux kernel. Namespaces give it a private view of processes, network, and files. Control groups limit how much memory and processor it may use.
If an image is a music file, a container is the file being played. You can play the same song on many phones at once, each playback is separate, and stopping one does not affect the others.
What can you control on a container?
Name
A friendly label so you can refer to the container without typing its long ID.
Environment values
Small pieces of configuration, such as a mode or a web address, passed in when it starts.
Published ports
Doors that link a port on the host to a port inside the container so visitors can reach it.
Resource limits
Caps on memory and processor share so one container cannot starve the others.
Restart policy
Rules that decide whether Docker should start the container again after it stops or crashes.
Attached storage and networks
Which volumes it may use and which networks it joins.
Many containers from one image
A busy website may run ten identical containers from one image, each handling some of the visitors. If one fails, the others carry on, and a new one can be started from the same image within seconds.
6The Life Story of a Container
Every container passes through predictable stages.
stateDiagram-v2
[*] --> Created
Created --> Running: start
Running --> Paused: pause
Paused --> Running: unpause
Running --> Exited: stop or program ends
Exited --> Running: restart
Exited --> Removed: remove
Removed --> [*]
Created
Docker has prepared the container, including its writable layer, but nothing is running yet.
Running
The main process is alive. Docker connects the network, mounts the storage, and applies the limits.
Paused or Exited
A paused container is frozen in memory. An exited container has stopped, but still exists with its writable layer.
Removed
The container and its writable layer are deleted. Anything stored only inside it is gone for good.
A container lives only as long as its main process. When that program ends, the container moves to the exited state. This is why a container that seems to “do nothing” often stops right away: its main job finished.
7Docker Volumes: Storage That Lasts
Because containers are disposable, data needs a safer home.
Everything written inside a container’s writable layer disappears when the container is removed. For a simple web page that saves nothing, this is fine. For a database, it would be a disaster. A volume is a storage object created and managed by Docker that lives outside any single container. You can attach it to a container, detach it, and attach it to a different container later, and the data stays intact.
A container is like a hotel room that is reset after every guest. A volume is a safe deposit box at the bank. Your valuables stay there no matter how many hotel rooms you check in to and out of.
Why volumes are preferred
Advantages
- Data survives when the container is stopped, removed, or replaced
- Managed by Docker, so it does not depend on the host’s folder layout
- Can be shared safely between several containers
- Easy to back up, move, and inspect as a named object
- Can use plugins to store data on remote or specialized storage
Disadvantages / Trade-offs
- Data lives in a Docker-controlled area, so it is less obvious to browse by hand
- Forgotten volumes pile up and quietly use disk space
- Sharing one volume between writers needs care to avoid clashes
Databases
A database container stores its files in a volume. Upgrade the database by replacing the container with a newer image, attach the same volume, and the data carries over.
Shared uploads
Several web containers can attach the same volume so uploaded pictures are available no matter which container served the upload.
8Mounts: Three Ways to Attach Storage
Volumes are one option among three, and each has its best moment.
Volume
Docker-managed storage. Best for important data such as databases.
Bind Mount
A folder from the host shared directly into the container. Great for development, since edits appear instantly.
Memory Mount
Storage held only in memory and never written to disk. Good for short-lived or sensitive scratch data.
| Feature | Volume | Bind Mount | Memory Mount |
|---|---|---|---|
| Who manages it | Docker | You, through the host folder | The system memory |
| Survives container removal | Yes | Yes, it is a normal host folder | No |
| Depends on host folder layout | No | Yes | No |
| Typical use | Production data | Live code editing in development | Temporary or secret scratch files |
A bind mount gives the container direct access to a real folder on your computer. If the container is compromised or misbehaves, it can change or delete those files. Share only the folders it truly needs, and consider read-only access when it only needs to read.
9Docker Networks: The Connections
How containers find each other and the outside world.
A network is a virtual connection managed by Docker. Each container can join one or more networks, and the network decides who may talk to whom. This is powerful when your system has several parts, such as a website, an API, and a database, because you can let the website reach the API while keeping the database private.
A network is like a group chat. Only members can see and send messages inside it, and you decide who to add. A container can be in several group chats at once.
Network types
| Type | What It Does | When to Use It |
|---|---|---|
| Bridge | A private virtual network on one host where attached containers can reach each other | The everyday choice for a single machine |
| Host | The container shares the host’s network directly, with no separation | When maximum network speed matters and less isolation is acceptable |
| None | The container has no network at all | Jobs that must never reach the network |
| Overlay | Connects containers running on different machines as if they were together | Multi-machine clusters |
| Macvlan | Gives a container its own address on the physical network, like a separate device | Legacy tools that expect to sit directly on the local network |
Finding each other by name
On a user-created bridge network, Docker provides built-in name lookup. Your API can reach the database simply by using its container name, without knowing its numeric address. If the database container is replaced and receives a new address, the name still works.
Publishing ports
By default, a container’s network is private. To let people outside reach a web application inside a container, you publish a port. This links a chosen port on the host to a port inside the container, like a doorbell on the front door that rings one specific apartment.
flowchart LR
V["Visitor"] -->|"host port"| H["Host computer"]
H -->|"published port"| W["Web container"]
W -->|"private network"| A["API container"]
A -->|"private network"| DB["Database container"]
10Docker Plugins: The Add-ons
The least known member of the family, but a useful one.
Docker’s built-in features cover most needs, but sometimes you want something more specialized. Plugins are add-ons that extend the Docker engine. They are installed, enabled, disabled, and removed like other objects.
Volume plugins
Let volumes store data on remote or special systems, such as network storage or cloud disks.
Network plugins
Provide alternative ways to connect containers, for example specialized virtual networks.
Logging plugins
Send container logs to a chosen central destination instead of the default location.
Plugins are like apps on a phone. The phone works well by itself, but an app lets it do something extra, such as a new kind of storage or a special connection.
Most beginners never need a plugin, and that is perfectly fine. Learn images, containers, volumes, and networks first. Plugins matter later, when you need storage or logging that the standard options do not provide.
11Cluster Objects: Nodes, Services, and Tasks
When one computer is not enough, Docker adds more objects.
Docker has a built-in clustering mode called Swarm. In this mode, several machines work together as one group, and new objects appear to describe the group’s work. You do not need them on a single laptop, but knowing their names helps you read documentation and understand larger systems.
Node
One machine that has joined the cluster. Managers make decisions, and workers run the containers.
Service
A description of what you want to run, such as “keep three copies of this web image running”. Docker works to make reality match it.
Task
One single container slot belonging to a service. A service with three copies has three tasks.
flowchart TD
S["Service: web, 3 replicas wanted"] --> T1["Task 1"]
S --> T2["Task 2"]
S --> T3["Task 3"]
T1 --> N1["Worker node A"]
T2 --> N2["Worker node B"]
T3 --> N2
Self-healing
If a container in a service crashes or a node disappears, the cluster notices that fewer copies are running than requested and starts replacements elsewhere.
Easy scaling
To handle a busy day, you change the wanted number of copies, and the cluster starts the extra containers for you.
A service is a manager’s instruction: “I need three cashiers at the store at all times.” The tasks are the individual cashiers, and the nodes are the different store branches. If a cashier calls in sick, the manager quickly finds a replacement.
12Secrets and Configs: Handling Sensitive and Changing Settings
Two cluster objects that keep settings out of your images.
Secrets
A secret is a small piece of sensitive information, such as a password, key, or certificate. In Swarm mode, secrets are stored in encrypted form in the cluster and are given only to the services that need them. Inside the container they appear as files in a temporary in-memory location, so they are not written into the image and are not sitting on disk.
Configs
A config is similar but meant for non-sensitive settings, such as a web server’s configuration file. It lets you change settings without rebuilding the image. The same image can behave differently in testing and production simply by receiving different configs.
| Feature | Secret | Config |
|---|---|---|
| Purpose | Sensitive values like passwords and keys | Ordinary settings and configuration files |
| Stored securely and encrypted | Yes | Not intended for confidential data |
| Kept out of the image | Yes | Yes |
| Changing it needs an image rebuild | No | No |
Do not bake passwords into an image. Even if a later step deletes them, they can remain visible in an earlier layer, and anyone who receives the image can find them.
13Compose Projects and Stacks: Objects Working as a Team
Real applications combine many objects, and you can describe them all in one file.
A typical application needs several containers, a couple of volumes, and a network or two. Creating each one by hand is slow and easy to get wrong. Docker Compose lets you describe the whole set in a single text file: which images to use, which volumes to create, which networks to join, and what settings to apply. One instruction then creates everything, and one instruction removes it.
A group of objects started together this way is called a project. In Swarm mode, a similar group is called a stack. In both cases the idea is the same: treat many related objects as one unit that you can start, stop, and remove together.
Blog with a database
One container runs the web application, another runs the database, a volume keeps the database files, and a private network joins the two. All of these are described once and started together.
Onboarding a new developer
Instead of a long setup document, a new teammate starts the project file and receives the entire working environment in minutes.
Keeping the description in a text file means your setup can be stored, reviewed, and shared like any other document. The objects become repeatable rather than a memory of what someone typed last month.
14How the Objects Work Together: A Full Journey
Follow one request from your keyboard to a running application.
sequenceDiagram
participant You
participant Client as Docker Client
participant Daemon as Docker Daemon
participant Reg as Registry
You->>Client: ask to run an application
Client->>Daemon: send the request
Daemon->>Daemon: look for the image locally
Daemon->>Reg: download missing layers
Reg-->>Daemon: image layers
Daemon->>Daemon: create network and volume if needed
Daemon->>Daemon: create and start the container
Daemon-->>Client: report success
Client-->>You: application is running
You send a request
The client tool turns your words into a message for the background service, called the daemon.
The image object is found or downloaded
The daemon checks its local storage and pulls only the missing layers from the registry.
Supporting objects are prepared
Networks and volumes named in the request are created if they do not already exist.
The container object comes alive
A writable layer is added, the isolation is set up, the storage and network are attached, and the application starts.
Notice the direction of dependence. A container needs an image, but an image needs nothing. A container may use a volume and a network, but those can exist without any container. Removing a container never deletes its image, and by default it never deletes named volumes either. Understanding this direction of dependence prevents many accidental deletions.
15Supporting Objects: Contexts, Builders, and Labels
A few extra helpers you will bump into as you grow.
Context
A saved connection setting that tells the Docker client which engine to talk to, such as your laptop or a remote server.
Builder
The component that turns a Dockerfile into an image. You can have more than one, for different needs.
Label
A small piece of descriptive information attached to an object, such as which team owns it. It does not change behavior, but makes objects easy to find and organize.
Registry and Repository
The online library and the shelf of versions inside it where images are stored and shared.
Labels are like sticky notes on moving boxes: “Kitchen”, “Fragile”, “Open first”. They do not change what is in the box, but they help you find things quickly when you have hundreds.
Using contexts to switch targets safely
A team can keep one context for a test server and another for production, and switch between them by name. This avoids the classic mistake of running a command against the wrong machine.
16Security Across the Objects
Each object carries its own risks and its own protections.
| Object | Main Risk | Main Protection |
|---|---|---|
| Image | Known weaknesses in old packages, or untrusted publishers | Use trusted minimal images, scan them, and rebuild regularly |
| Container | Running with too many powers, or as the administrator user | Use a normal user, drop extra privileges, set limits, avoid privileged mode |
| Volume | Sensitive data left readable by others | Limit which containers can attach it, and protect backups |
| Network | Too many containers able to talk to each other | Use separate networks and publish only necessary ports |
| Secret | Leaking in images or logs | Deliver at run time using secret handling, never bake in |
| Daemon access | Whoever controls the daemon controls the host | Restrict access and consider the rootless mode |
Least privilege
Give each object only the access it needs. A web container does not need to reach the database’s storage, and a reporting container may only need read access to one folder.
Isolation through separate networks
Put the public-facing web container on one network and the database on another private one, joined only by the API. An attacker who breaks into the web container cannot reach the database directly.
Containers share the host kernel. Isolation is strong, but it is not the same as a full virtual machine, so a badly configured container can still endanger the host.
17Inspecting, Logging, and Monitoring Objects
Because you cannot fix what you cannot see.
Listing and inspecting
Docker can list every object of a given kind, and it can show the complete detail of any single one. The detailed view shows settings, connections, storage attachments, and current state. This is the first place to look when something behaves unexpectedly.
Logs
Applications in containers should write their messages to the standard output and error streams. Docker collects these and lets you read them. In production, teams send logs to a central system, because a removed container takes its own local records with it.
Metrics and events
Docker can report how much processor, memory, network, and disk each container uses. It also records events such as objects being created, started, stopped, or deleted. Monitoring tools collect these numbers and draw graphs so you can spot trends, like memory rising steadily or a container restarting again and again.
Health checks
A container can be marked as running while the program inside is stuck. A health check is a small regular test, and Docker records whether it passes. Cluster tools use the result to replace containers that have quietly stopped working.
Inspect
The full detail sheet of one object.
Logs
What the application said, in order.
Metrics
Numbers over time for processor, memory, network, and disk.
Events
A record of what happened to objects and when.
Watching containers is like caring for patients in a ward. Inspection is the patient’s chart, logs are the nurse’s notes, metrics are the heart monitors, and health checks are the regular “how are you feeling?” questions.
18Advantages and Trade-offs of the Object Model
Why Docker splits everything into separate objects, and what it costs.
Advantages
- Clear separation: the template, the running instance, the storage, and the connections can each change on their own
- Disposable containers can be replaced without touching data or images
- Objects are named and inspectable, so they are easy to automate
- The same images and settings can be reused across laptops, test, and production
- Sharing layers keeps storage and downloads efficient
Disadvantages / Trade-offs
- Beginners must learn several concepts before feeling comfortable
- Unused objects such as old images and volumes quietly accumulate
- Relationships between objects can be hidden, making cleanup risky without care
- Cluster objects add a further layer of ideas to learn
19Design Patterns and Anti-patterns
Good habits and bad habits when working with objects.
Helpful patterns
One job per container
Each container does a single task, which makes it easier to update, scale, and secure.
Data in volumes, logic in containers
Keep anything precious in a volume so the container stays replaceable.
Multi-stage images
Build the application with heavy tools in one stage, then copy only the result into a slim final image.
Separate networks per tier
Front-end, back-end, and data get their own networks, so only necessary paths exist.
Harmful anti-patterns
Problem
Keeping important data only in the container’s writable layer.
Why It’s Harmful
When the container is removed or replaced, the data disappears, often at the worst possible moment.
Correct Approach
Attach a volume for anything that must survive, and treat the container itself as disposable.
Problem
Fixing a running container by hand and saving it as a new image.
Why It’s Harmful
The fix is undocumented and unrepeatable. Nobody can rebuild the image reliably, and hidden changes accumulate.
Correct Approach
Change the Dockerfile or configuration, rebuild the image, and replace the container.
Problem
Placing every container on the same default network.
Why It’s Harmful
Any container can reach any other, so one compromised component exposes everything, and name lookup is less convenient.
Correct Approach
Create user-defined networks per application or tier and attach only the containers that must communicate.
20Best Practices, Cleanup, and Common Mistakes
A short checklist to keep your objects tidy and safe.
Give objects meaningful names
Names like “shop-database” help far more than random generated ones when you have dozens of objects.
Pin image versions
Use specific tags or digests, so today’s deployment and next month’s are the same.
Use labels
Mark objects with owner, project, or environment so you can find and clean them by group.
Prefer volumes for lasting data
Reserve bind mounts mainly for development, and memory mounts for temporary secrets.
Set limits and health checks
Give production containers sensible memory and processor limits, plus a health check.
Clean up on a schedule
Docker offers a prune feature that removes unused containers, images, networks, and, on request, volumes. Review what will be removed first, especially for volumes.
Mistakes beginners often make
Deleting an image does not stop a running container, and stopping a container does not delete its image. Always check which object you are talking about.
Cleanup tools may treat a volume as unused if no container currently attaches it, even though it holds precious data. Back up or double-check before removing volumes.
Your application may change without warning after a fresh download. Pin versions for anything important.
Exited containers still exist and hold onto disk space. Remove them when no longer needed, or start short jobs so that they clean up after themselves.
21Docker Objects in the Real World
Where these objects show up in everyday engineering.
Development environments
Teams describe the containers, volumes, and networks their application needs in one project file, so each developer gets an identical setup within minutes.
Automated build and test pipelines
Build servers create fresh containers from images to run tests in clean surroundings, then remove them. The tested image is the very one that goes on to production.
Microservice applications
Each small service becomes its own image and its own containers, joined by networks. Companies such as Netflix and Spotify have publicly described container-based service architectures.
Databases and stateful tools
Volumes keep data safe while containers are upgraded or moved, allowing teams to update software without losing information.
Large clusters
In cluster setups, services and tasks describe the desired state, and secrets and configs keep sensitive and changing settings out of images. Many large organizations use Kubernetes for this job, which has its own objects but builds on the same image and container ideas.
| Task | Objects Involved |
|---|---|
| Run a website locally | Image, container, published port |
| Run a website with a database | Two images, two containers, a network, a volume |
| Share your work with a teammate | Image, registry, project file |
| Keep a password out of the image | Secret, service or container |
| Scale a busy site across machines | Nodes, service, tasks, overlay network |
22Frequently Asked Questions
Quick answers to the questions beginners ask most.
An image is a read-only template. A container is a running instance created from it, with a thin writable layer on top. One image can produce many containers.
The commonly listed core objects are images, containers, networks, volumes, and plugins. Cluster mode adds nodes, services, tasks, secrets, and configs, and there are supporting items like contexts and builders. The exact grouping varies by explanation, but the core five are the ones to learn first.
Data in the container’s writable layer is deleted with it. Data in a named volume stays until you remove the volume itself.
Not exactly. A Dockerfile is an ordinary text file you write. Docker uses it as a recipe to create an image, and the image is the object.
Yes. A container can attach several volumes and join several networks at the same time, which is a common way to separate public and private traffic.
Yes, but be careful. If several containers write to the same files at once, they can overwrite each other’s work. Sharing is safest when only one writes and the others read.
Most people do not, at least at the start. Plugins are for special needs, such as remote storage or specialized logging.
A container is a single running instance. A service is a cluster-level description of how many copies you want and how they should run. Docker creates the containers, through tasks, to match the service.
Docker does not delete objects on its own initiative, since it cannot know if you still need them. Regular cleanup, with a careful review, keeps disk use under control.
Start with images and containers, since everything else builds on them. Then learn volumes and networks, and only later look at cluster objects and plugins.
23Summary and Key Takeaways
Docker objects are the named building blocks that every Docker command creates, inspects, changes, or removes. Images are the read-only templates, containers are the disposable running instances, volumes hold the data that must last, networks connect everything in a controlled way, and plugins extend the engine. In cluster mode, nodes, services, tasks, secrets, and configs describe the work of many machines. Once you know which object a command is about, the tool becomes far more predictable, and most beginner confusion melts away.
Key Takeaways
- Objects are the nouns of Docker — images, containers, volumes, networks, and plugins are the core things you create and manage.
- Images are templates, containers are instances — one image can start many independent containers, and deleting one does not automatically affect the other.
- Containers are disposable — keep anything important in a volume, and change behavior by rebuilding images rather than editing running containers.
- Networks control conversations — use separate user-defined networks, publish only the ports that outsiders need, and let containers find each other by name.
- Layers, tags, and digests explain images — layers make them efficient, tags make them friendly, and digests make them exactly repeatable.
- Cluster objects scale the idea — services describe what you want, tasks are the individual containers, and secrets and configs keep settings out of images.
- Tidy and secure as you go — name and label objects, use least privilege, review before pruning, and never bake secrets into images.