{"id":478,"date":"2026-09-07T17:10:00","date_gmt":"2026-09-07T17:10:00","guid":{"rendered":"https:\/\/www.aemonline.net\/blog\/?p=478"},"modified":"2026-09-07T17:06:10","modified_gmt":"2026-09-07T17:06:10","slug":"docker-and-devops-the-missing-link-between-code-and-deployment","status":"publish","type":"post","link":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/","title":{"rendered":"Docker and DevOps: The Missing Link Between Code and Deployment"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you have worked in software development for any length of time, you have probably heard this sentence:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u201cBut it works on my machine.\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It sounds almost like a developer joke, but behind it is a very real engineering problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An application works perfectly on a developer&#8217;s laptop. It moves to the testing environment and suddenly something breaks. Perhaps the runtime version is different. Maybe a library is missing. A configuration has changed, or the underlying operating system behaves slightly differently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then the DevOps team begins troubleshooting an application that was supposedly \u201cworking.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is one of the problems Docker addresses remarkably well.<\/p>\n\n\n\n<p class=\"has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1 wp-block-paragraph\">Docker did not create DevOps, and using Docker does not magically turn an organization into a DevOps organization. What Docker does provide is something extremely valuable to DevOps teams: <strong>a consistent way to package an application and move that package through the software delivery lifecycle.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the linkage between Docker and DevOps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s explore it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What Does Docker Actually Solve?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before talking about Docker commands or architecture, it helps to understand the problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine that we have developed a web application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For that application to work, we might need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a particular runtime;<\/li>\n\n\n\n<li>specific libraries;<\/li>\n\n\n\n<li>application dependencies;<\/li>\n\n\n\n<li>operating-system packages; and<\/li>\n\n\n\n<li>certain configuration.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Traditionally, we would install and configure those requirements on every environment where the application needed to run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That creates opportunities for differences to appear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Development might have one version of a dependency, testing another, and production something slightly different again.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker approaches the problem differently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of asking:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u201cHow do I recreate this application environment on another server?\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">we can ask:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u201cHow do I package the application so that I can deploy the same artifact elsewhere?\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That small change in thinking is important.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With Docker, we define how the application should be packaged using a <strong>Dockerfile<\/strong>. Docker uses those instructions to create a <strong>container image<\/strong>, which can then be stored, distributed and used to create running containers.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-a496b057 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" src=\"https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/Docker-Slide2-1024x576.png\" alt=\"\" class=\"uag-image-480\" width=\"1672\" height=\"941\" title=\"Docker-Slide2\" loading=\"lazy\" role=\"img\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In simple terms:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Source Code\n     \u2193\nDockerfile\n     \u2193\nDocker Build\n     \u2193\nContainer Image\n     \u2193\nRunning Container\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This gives us one of the most useful principles in modern application delivery:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Build once, validate the artifact, and deploy the same artifact consistently.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">So, Where Does DevOps Come Into the Picture?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is where things become interesting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DevOps is much bigger than containers. It brings development and operations closer together through collaboration, automation, continuous integration, continuous delivery, observability and shared responsibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker fits into that model because it gives both sides something consistent to work with.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consider a typical workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A developer writes some code and pushes it to Git.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That change triggers a CI pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The pipeline runs tests and builds a container image. The image can then be scanned for known vulnerabilities and, assuming it passes the required checks, pushed to a container registry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The deployment process retrieves that approved image and deploys it into the required environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The flow might look like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notice what Docker is doing here.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-ea09c7ab wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" src=\"https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/Docker-Slide4-1024x576.png\" alt=\"\" class=\"uag-image-481\" width=\"1672\" height=\"941\" title=\"Docker-Slide4\" loading=\"lazy\" role=\"img\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">It is not replacing Git.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is not replacing Jenkins or GitHub Actions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is not replacing Kubernetes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And it certainly is not replacing DevOps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker is providing the <strong>standardized application artifact that moves between these stages<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction is worth remembering.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Docker Images and Containers Are Not the Same Thing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is probably the most important Docker concept for anyone starting with containers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>Docker image<\/strong> and a <strong>Docker container<\/strong> are related, but they are not interchangeable terms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of the image as the packaged application template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A container is a running instance created from that image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, we might build an image called:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>myapp:1.0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">From that single image, we could create several containers.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>                \u250c\u2500\u2500 Container 1\nmyapp:1.0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500 Container 2\n                 \u2514\u2500\u2500 Container 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The underlying image remains the application artifact.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The containers are its running instances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So if you remember only one distinction:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Image = packaged artifact. Container = running instance.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">It will make the rest of Docker considerably easier to understand.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why Docker Works So Well with CI\/CD<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is where I think Docker becomes particularly valuable from a DevOps perspective.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without a standardized artifact, a team may unintentionally rebuild or reconfigure an application at different stages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Build for Testing\n       \u2193\nTest\n       \u2193\nBuild Again for Staging\n       \u2193\nBuild Again for Production\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Every rebuild creates another opportunity for something to change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perhaps a newer package gets downloaded. Perhaps the build environment changes. Perhaps somebody modifies a configuration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A stronger approach is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Build Image\n     \u2193\nTest Image\n     \u2193\nSecurity Scan\n     \u2193\nPublish Approved Image\n     \u2193\nDeploy to Staging\n     \u2193\nDeploy Same Artifact to Production\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now we have a much clearer chain of custody.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We know what was built.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We know what was tested.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We know what was scanned.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And, most importantly, we know what was deployed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is exactly the kind of repeatability we want from a mature CI\/CD process.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Container Registry Is More Important Than It Looks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once we have built an image, we need somewhere to store it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the job of a <strong>container registry<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The CI pipeline pushes approved images into the registry, and deployment systems retrieve them when required.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CI Pipeline\n     \u2193\nDocker Image\n     \u2193\nContainer Registry\n     \u2193\nDeployment Platform\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This also introduces proper versioning into the deployment process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>myapp:1.0\nmyapp:1.1\nmyapp:1.2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now, if production is running version <code>1.1<\/code>, we have a much clearer idea of exactly what has been deployed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In mature environments, teams may go further and deploy using immutable image digests rather than relying only on mutable tags.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The underlying principle remains the same:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The deployment artifact should be identifiable and reproducible.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Where Kubernetes Fits \u2014 and a Common Misunderstanding<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Docker and Kubernetes are frequently mentioned in the same conversation, which sometimes creates the impression that they do the same job.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They don&#8217;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker provides tooling to build container images and work with containers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes solves a different problem: <strong>how do we operate containerized workloads at scale?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Suppose our application suddenly needs ten instances rather than two.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We also need service discovery, rolling updates, health checks, workload scheduling and automatic recovery when an instance fails.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Those are orchestration problems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is where Kubernetes comes in.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The relationship is easier to understand like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application Code\n      \u2193\nDockerfile\n      \u2193\nContainer Image\n      \u2193\nRegistry\n      \u2193\nKubernetes\n      \u2193\nRunning Workloads\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">There is also a technical detail worth clearing up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modern Kubernetes does <strong>not require Docker Engine as its container runtime<\/strong>. Kubernetes commonly works with CRI-compatible runtimes such as <code>containerd<\/code> or CRI-O.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That does not mean Docker images suddenly became irrelevant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OCI-compatible container images built using Docker tooling can still be stored in registries and deployed as Kubernetes workloads.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So the statement <strong>\u201cKubernetes replaced Docker\u201d<\/strong> oversimplifies what actually happened.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Docker Is One Piece of the DevOps Puzzle<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Another mistake newcomers sometimes make is learning Docker and assuming they have learned DevOps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker is a tool within a much larger ecosystem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A real-world environment might look something like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Git<\/strong> manages source code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Jenkins, GitHub Actions or GitLab CI\/CD<\/strong> automates builds, tests and delivery workflows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Docker<\/strong> provides standardized container packaging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Container registries<\/strong> store and distribute images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kubernetes<\/strong> orchestrates containerized workloads.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Terraform<\/strong> provisions infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ansible<\/strong> automates configuration and operational tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prometheus<\/strong> collects metrics.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Grafana<\/strong> turns those metrics into useful dashboards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put everything together and we get something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Git\n \u2193\nCI\/CD\n \u2193\nBuild Container Image\n \u2193\nTest + Security Scan\n \u2193\nContainer Registry\n \u2193\nKubernetes \/ Cloud\n \u2193\nMonitoring &amp; Observability\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Docker sits in a particularly interesting position because it connects what developers build with what operations eventually runs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">And What About Security?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Containers provide isolation, but <strong>containerization should never be confused with automatic security<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A badly built container image can still contain vulnerable packages, exposed secrets, unnecessary software or insecure configurations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is why Docker fits naturally into <strong>DevSecOps<\/strong> as well.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Security checks can become part of the pipeline rather than something performed just before production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A sensible container workflow might include:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are several practical habits worth developing.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-9fbfc66c wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" src=\"https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/Docker-Security-1024x576.png\" alt=\"\" class=\"uag-image-484\" width=\"1672\" height=\"941\" title=\"Docker-Security\" loading=\"lazy\" role=\"img\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Use trusted and preferably minimal base images. Keep dependencies patched. Avoid embedding passwords, API keys or other secrets inside images. Run applications as non-root where practical. Remove unnecessary packages. Scan images before deployment, and control who can push or pull images from production registries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For security-sensitive environments, artifact signing, provenance and policy enforcement can take this further.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The important point is that the container becomes part of the <strong>security lifecycle<\/strong>, not an exception to it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions About Docker and DevOps<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Is Docker required for DevOps?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. DevOps is a set of cultural and engineering practices, not a particular toolset. Docker is widely used because containerization supports many DevOps objectives, including consistency, automation and repeatable deployments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why is Docker useful in CI\/CD?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Docker allows a CI\/CD pipeline to create a standardized application image that can be tested, scanned, stored and subsequently deployed as the same artifact.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is the difference between Docker and Kubernetes?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Docker provides container-related tooling, including image building. Kubernetes orchestrates containerized workloads and handles capabilities such as scheduling, scaling, service discovery and desired-state management.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can Docker eliminate \u201cworks on my machine\u201d problems?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It can significantly reduce environment-related differences by packaging application dependencies consistently. It cannot eliminate every problem because external services, infrastructure, configuration, CPU architecture and other environmental factors can still affect application behaviour.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is a Docker container a virtual machine?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Virtual machines typically include complete guest operating systems running through a hypervisor. Containers normally share the host kernel while providing isolated application environments, which generally makes them more lightweight.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Real Docker\u2013DevOps Link<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After all the terminology, tools and architecture, the relationship between Docker and DevOps comes down to something quite simple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DevOps needs <strong>repeatability<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It needs to take something created by development, validate it automatically, deliver it reliably and operate it predictably.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker gives that process a standardized application artifact.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The developer creates the code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git tracks it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CI builds and validates it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker packages it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A registry stores it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CD delivers it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes or another platform runs it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And observability tools tell us how it is behaving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is why Docker has become so closely associated with modern DevOps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not because containers <em>are<\/em> DevOps, but because containers solve one of DevOps&#8217; most important engineering challenges:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>moving software from development to production without unnecessarily changing what we are deploying along the way.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If there is one principle worth taking away, it is this:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Build once. Test and secure the artifact. Store it with a clear identity. Then deploy that same artifact consistently.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">That is the real linkage between <strong>Docker and DevOps<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you have worked in software development for any length of time, you have probably heard this sentence: \u201cBut it works on my machine.\u201d It sounds almost like a developer<\/p>\n","protected":false},"author":1,"featured_media":487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[74,53],"tags":[57,56],"class_list":["post-478","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-docker","tag-devops","tag-docker"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Devraj Sarkar\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AEM Institute Blog - Premium AI and Data Engineering Training Institute for Working Professional\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Docker and DevOps: From Code to Deployment\" \/>\n\t\t<meta property=\"og:description\" content=\"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-07T17:10:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-07T17:06:10+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Docker and DevOps: From Code to Deployment\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#blogposting\",\"name\":\"Docker and DevOps: From Code to Deployment\",\"headline\":\"Docker and DevOps: The Missing Link Between Code and Deployment\",\"author\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/author\\\/devraj\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png\",\"width\":1672,\"height\":941,\"caption\":\"Docker and DevOps: The Missing Link Between Code and Deployment\"},\"datePublished\":\"2026-09-07T17:10:00+00:00\",\"dateModified\":\"2026-09-07T17:06:10+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#webpage\"},\"articleSection\":\"DevOps, Docker, DevOps, Docker\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.aemonline.net\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/category\\\/docker\\\/#listItem\",\"name\":\"Docker\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/category\\\/docker\\\/#listItem\",\"position\":2,\"name\":\"Docker\",\"item\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/category\\\/docker\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#listItem\",\"name\":\"Docker and DevOps: The Missing Link Between Code and Deployment\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#listItem\",\"position\":3,\"name\":\"Docker and DevOps: The Missing Link Between Code and Deployment\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/category\\\/docker\\\/#listItem\",\"name\":\"Docker\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/#organization\",\"name\":\"AEM Institute Blog\",\"description\":\"Premium AI and Data Engineering Training Institute for Working Professional\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/author\\\/devraj\\\/#author\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/author\\\/devraj\\\/\",\"name\":\"Devraj Sarkar\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8406e1dbd406e8520a0a61478d6cc11301843be13c1ff46b03d547b55531d78d?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Devraj Sarkar\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#webpage\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/\",\"name\":\"Docker and DevOps: From Code to Deployment\",\"description\":\"Discover how Docker connects development and DevOps through containers, CI\\\/CD, security, Kubernetes, and consistent application deployment.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/author\\\/devraj\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/author\\\/devraj\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#mainImage\",\"width\":1672,\"height\":941,\"caption\":\"Docker and DevOps: The Missing Link Between Code and Deployment\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/docker-and-devops-the-missing-link-between-code-and-deployment\\\/#mainImage\"},\"datePublished\":\"2026-09-07T17:10:00+00:00\",\"dateModified\":\"2026-09-07T17:06:10+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/\",\"name\":\"AEM Institute Blog\",\"description\":\"Premium AI and Data Engineering Training Institute for Working Professional\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.aemonline.net\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Docker and DevOps: From Code to Deployment","description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.","canonical_url":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#blogposting","name":"Docker and DevOps: From Code to Deployment","headline":"Docker and DevOps: The Missing Link Between Code and Deployment","author":{"@id":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/#author"},"publisher":{"@id":"https:\/\/www.aemonline.net\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png","width":1672,"height":941,"caption":"Docker and DevOps: The Missing Link Between Code and Deployment"},"datePublished":"2026-09-07T17:10:00+00:00","dateModified":"2026-09-07T17:06:10+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#webpage"},"isPartOf":{"@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#webpage"},"articleSection":"DevOps, Docker, DevOps, Docker"},{"@type":"BreadcrumbList","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.aemonline.net\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog\/category\/docker\/#listItem","name":"Docker"}},{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog\/category\/docker\/#listItem","position":2,"name":"Docker","item":"https:\/\/www.aemonline.net\/blog\/category\/docker\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#listItem","name":"Docker and DevOps: The Missing Link Between Code and Deployment"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#listItem","position":3,"name":"Docker and DevOps: The Missing Link Between Code and Deployment","previousItem":{"@type":"ListItem","@id":"https:\/\/www.aemonline.net\/blog\/category\/docker\/#listItem","name":"Docker"}}]},{"@type":"Organization","@id":"https:\/\/www.aemonline.net\/blog\/#organization","name":"AEM Institute Blog","description":"Premium AI and Data Engineering Training Institute for Working Professional","url":"https:\/\/www.aemonline.net\/blog\/"},{"@type":"Person","@id":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/#author","url":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/","name":"Devraj Sarkar","image":{"@type":"ImageObject","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/8406e1dbd406e8520a0a61478d6cc11301843be13c1ff46b03d547b55531d78d?s=96&d=mm&r=g","width":96,"height":96,"caption":"Devraj Sarkar"}},{"@type":"WebPage","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#webpage","url":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/","name":"Docker and DevOps: From Code to Deployment","description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.aemonline.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#breadcrumblist"},"author":{"@id":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/#author"},"creator":{"@id":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png","@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#mainImage","width":1672,"height":941,"caption":"Docker and DevOps: The Missing Link Between Code and Deployment"},"primaryImageOfPage":{"@id":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/#mainImage"},"datePublished":"2026-09-07T17:10:00+00:00","dateModified":"2026-09-07T17:06:10+00:00"},{"@type":"WebSite","@id":"https:\/\/www.aemonline.net\/blog\/#website","url":"https:\/\/www.aemonline.net\/blog\/","name":"AEM Institute Blog","description":"Premium AI and Data Engineering Training Institute for Working Professional","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.aemonline.net\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"AEM Institute Blog - Premium AI and Data Engineering Training Institute for Working Professional","og:type":"article","og:title":"Docker and DevOps: From Code to Deployment","og:description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.","og:url":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/","article:published_time":"2026-09-07T17:10:00+00:00","article:modified_time":"2026-09-07T17:06:10+00:00","twitter:card":"summary_large_image","twitter:title":"Docker and DevOps: From Code to Deployment","twitter:description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment."},"aioseo_meta_data":{"post_id":"478","title":"Docker and DevOps: From Code to Deployment","description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":"Docker and DevOps: From Code to Deployment","og_description":"Discover how Docker connects development and DevOps through containers, CI\/CD, security, Kubernetes, and consistent application deployment.","og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":true,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-07 07:00:56","updated":"2026-09-07 17:16:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.aemonline.net\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.aemonline.net\/blog\/category\/docker\/\" title=\"Docker\">Docker<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tDocker and DevOps: The Missing Link Between Code and Deployment\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.aemonline.net\/blog"},{"label":"Docker","link":"https:\/\/www.aemonline.net\/blog\/category\/docker\/"},{"label":"Docker and DevOps: The Missing Link Between Code and Deployment","link":"https:\/\/www.aemonline.net\/blog\/docker-and-devops-the-missing-link-between-code-and-deployment\/"}],"uagb_featured_image_src":{"full":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png",1672,941,false],"thumbnail":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM-150x150.png",150,150,true],"medium":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM-300x169.png",300,169,true],"medium_large":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM-768x432.png",768,432,true],"large":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM-1024x576.png",1024,576,true],"1536x1536":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM-1536x864.png",1536,864,true],"2048x2048":["https:\/\/www.aemonline.net\/blog\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-7-2026-10_32_17-PM.png",1672,941,false]},"uagb_author_info":{"display_name":"Devraj Sarkar","author_link":"https:\/\/www.aemonline.net\/blog\/author\/devraj\/"},"uagb_comment_info":1,"uagb_excerpt":"If you have worked in software development for any length of time, you have probably heard this sentence: \u201cBut it works on my machine.\u201d It sounds almost like a developer","_links":{"self":[{"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/posts\/478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/comments?post=478"}],"version-history":[{"count":5,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/posts\/478\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/posts\/478\/revisions\/486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/media\/487"}],"wp:attachment":[{"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/media?parent=478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/categories?post=478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aemonline.net\/blog\/wp-json\/wp\/v2\/tags?post=478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}