{"id":36675,"date":"2026-03-10T13:35:18","date_gmt":"2026-03-10T17:35:18","guid":{"rendered":"https:\/\/www.lpi.org\/articles\/\/"},"modified":"2026-03-17T10:47:39","modified_gmt":"2026-03-17T14:47:39","slug":"devops-tools-introduction-08-container-infrastructure","status":"publish","type":"post","link":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/","title":{"rendered":"DevOps Tools Introduction #08: Container Infrastructure"},"content":{"rendered":"<p>While <a href=\"https:\/\/www.lpi.org\/blog\/2018\/02\/20\/devops-tools-introduction-07-container-orchestration\/\">Docker makes it easy to start and manage containers<\/a>, there must still be a base system hosting the containers. These systems form the infrastructure on which containers run and are covered by <a href=\"https:\/\/wiki.lpi.org\/wiki\/DevOps_Tools_Engineer_Objectives_V2.0#702.3_Container_Image_Building_(weight:_5)\">objective 702.3<\/a> of the DevOps Tools Engineer exam.<\/p>\n<p>Container images are the foundation of modern cloud-native infrastructure. They provide a portable, reproducible way to package applications together with their runtime, dependencies, and configuration. Understanding how to create images, manage them securely, and distribute them properly is essential for DevOps professionals working with Docker, Podman, and other OCI-compliant tools.<\/p>\n<p>Creating container images begins with a <a href=\"https:\/\/docs.docker.com\/reference\/dockerfile\/\">Dockerfile<\/a> (or Containerfile in Podman environments). This file defines, in a declarative way, how the image should be built. For example, a simple Node.js application might start with a base image declared using the <em>FROM<\/em> instruction, such as <em>FROM node:25-alpine<\/em>. This line tells the builder to use an existing OCI-compatible image as the foundation. Each subsequent instruction creates a new image layer. The <em>WORKDIR<\/em> instruction defines the working directory inside the container, <em>COPY<\/em> transfers application source code into the image, and RUN executes commands such as installing dependencies with <em>npm install<\/em>. Finally, <em>CMD<\/em> or <em>ENTRYPOINT<\/em> defines how the container will start when executed.<\/p>\n<p>A minimal example might look like this in practice:<\/p>\n<pre>FROM node:20-alpine\r\n# Set the working directory inside the container\r\nWORKDIR \/app\r\n# Copy application files from the host into the container\r\nCOPY . .\r\n# Install application dependencies\r\nRUN npm install\r\n# Expose the port used by the Node.js application\r\nEXPOSE 3000\r\n# Start the application\r\nCMD [\"node\", \"server.js\"]<\/pre>\n<p>The image starts from a lightweight Alpine-based Node image. The working directory is set to <code>\/app<\/code>, application files are copied from the host, dependencies are installed, and the container is configured to start the server with node <code>server.js.<\/code><\/p>\n<p>When the command \u201c<em>docker build -t myapp:1.0 .<\/em>\u201d is executed, Docker reads the Dockerfile and produces an image named <em>myapp<\/em> with the tag 1.0.<\/p>\n<p>The <a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/tag\/\">tagging<\/a> format follows OCI image naming conventions, typically structured as <em>[registry]\/[namespace]\/[repository]:[tag]<\/em>.<\/p>\n<p>For example, <em>docker.io\/library\/nginx:latest<\/em> specifies the Docker Hub registry, the library namespace, the nginx repository, and the latest tag.<\/p>\n<p>OCI image names are standardized to ensure compatibility across container engines. An image such as <em>ghcr.io\/example\/api:2.1<\/em> clearly identifies the registry (GitHub Container Registry), the organization namespace, the repository, and the version tag. If no registry is specified, Docker defaults to <a href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a>. Understanding this naming structure is critical when pulling, tagging, or pushing images across different environments.<\/p>\n<p>After you build an image, it often needs to be uploaded to a registry so that other systems or deployment pipelines can access it. This requires authentication using <em>docker login<\/em>, followed by tagging the image appropriately and pushing it using docker <em>image push<\/em>.<\/p>\n<p>For example, after tagging <em>myapp:1.0<\/em> as <em>registry.example.com\/team\/myapp:1.0<\/em>, pushing the image makes it available to CI\/CD systems or Kubernetes clusters. Registries can be public, like Docker Hub, or private, such as enterprise registries hosted internally.<\/p>\n<p>Security plays a critical role in container image management. Container images may contain vulnerabilities inherited from base images or introduced by application dependencies.<\/p>\n<p>Image scanners analyze images for known <a href=\"https:\/\/www.cve.org\/\">CVEs<\/a> (Common Vulnerabilities and Exposures), outdated libraries, and insecure configurations. Tools such as <a href=\"https:\/\/trivy.dev\/\">Trivy<\/a>, <a href=\"https:\/\/github.com\/quay\/clair\">Clair<\/a>, and <a href=\"https:\/\/docs.docker.com\/scout\/\">Docker Scout<\/a> inspect image layers and compare them against vulnerability databases. For example, if a base image includes an outdated OpenSSL version with a known exploit, a scanner will flag it before deployment. This allows teams to rebuild images with patched dependencies.<\/p>\n<p>Container virtualization introduces its own security risks. Although containers isolate processes, they share the host kernel. A misconfigured container running as root can potentially exploit kernel vulnerabilities or escape containment if security best practices are not followed. Mitigation strategies include running containers as non-root users using the <em>USER<\/em> instruction, minimizing image size to reduce attack surface, using read-only filesystems, restricting processes\u2019 capabilities, and scanning images regularly. The <em>VOLUME<\/em> instruction should be used carefully to avoid unintended data exposure. <em>EXPOSE<\/em> only documents ports rather than enforcing firewall rules, so external exposure must be managed at the runtime level.<\/p>\n<p>To reduce build-time risks and optimize performance, modern container engines use advanced builders. Docker BuildKit improves performance through parallel builds, layer caching, and secret management. It also supports advanced syntax such as mounting SSH keys during build without persisting them in final layers. Docker buildx extends these capabilities by enabling multi-platform builds, allowing a single command to produce images for amd64 and arm64 architectures simultaneously. This is especially relevant in heterogeneous environments, including cloud and edge deployments.<\/p>\n<p><a href=\"https:\/\/podman.io\/\">Podman<\/a> users rely on the <code>podman build<\/code> command, which reads a Containerfile and produces OCI-compliant images that run withoutg a daemon. Buildah provides even more granular control, enabling scripted and rootless image builds. These tools align with modern security practices by supporting rootless container builds and tighter integration with Linux namespaces and cgroups.<\/p>\n<p>The <em><a href=\"https:\/\/docs.docker.com\/build\/concepts\/context\/\">.dockerignore<\/a><\/em> file is another critical component of secure and efficient builds. It prevents unnecessary or sensitive files from being included in the image context. For example, you should exclude the .git subdirectory, local configuration files, and secret credentials from the image in order to reduce image size and minimize accidental exposure of confidential data.<\/p>\n<p>To sum up, mastering Dockerfiles and OCI image management requires understanding both the technical and security dimensions. Building images is not merely about packaging software; it is about constructing immutable, portable artifacts that must be optimized, versioned, scanned, and securely distributed. By combining proper Dockerfile design, registry workflows, vulnerability scanning, and modern build tools like BuildKit, buildx, Podman build, and Buildah, DevOps professionals ensure that containerized applications remain efficient, secure, and production-ready.<\/p>\n<p>And don\u2019t forget that the LPI provides official Learning Materials for the <a href=\"https:\/\/learning.lpi.org\/en\/learning-materials\/701-200\/\">DevOps Tools Engineer version 2.0 exam<\/a>. These resources are comprehensive, freely available, and fully aligned with the exam objectives, making them an excellent primary reference throughout your preparation.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.lpi.org\/blog\/2026\/03\/03\/devops-tools-introduction-07-container-orchestration\/\">&lt;&lt; Read the previous part of this series<\/a>\u00a0| <a href=\"https:\/\/www.lpi.org\/blog\/2026\/03\/17\/devops-tools-introduction-09-machine-deployment\/\">Read the next part of this series &gt;&gt;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>While Docker makes it easy to start and  &#8230; <a href=\"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/\" class=\"button-link\">Read more<\/a><\/p>\n","protected":false},"author":66,"featured_media":36676,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"country":[],"language":[304],"ppma_author":[540,571],"class_list":["post-36675","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-none","language-english"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>DevOps Tools Introduction #08: Container Infrastructure - Linux Professional Institute (LPI)<\/title>\n<meta name=\"description\" content=\"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lpi.org\/ja\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DevOps Tools Introduction #08: Container Infrastructure\" \/>\n<meta property=\"og:description\" content=\"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/\" \/>\n<meta property=\"og:site_name\" content=\"Linux Professional Institute (LPI)\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LPIConnect\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-10T17:35:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T14:47:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"994\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fabian Thorns, Uir\u00e1 Ribeiro\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:site\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Thorns\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/\"},\"author\":{\"name\":\"Fabian Thorns\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#\\\/schema\\\/person\\\/87a340eca845e18d801667fd11e6937c\"},\"headline\":\"DevOps Tools Introduction #08: Container Infrastructure\",\"datePublished\":\"2026-03-10T17:35:18+00:00\",\"dateModified\":\"2026-03-17T14:47:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/\"},\"wordCount\":949,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg\",\"articleSection\":[\"- None -\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/\",\"name\":\"DevOps Tools Introduction #08: Container Infrastructure - Linux Professional Institute (LPI)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg\",\"datePublished\":\"2026-03-10T17:35:18+00:00\",\"dateModified\":\"2026-03-17T14:47:39+00:00\",\"description\":\"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg\",\"width\":1440,\"height\":994,\"caption\":\"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/blog\\\/2026\\\/03\\\/10\\\/devops-tools-introduction-08-container-infrastructure\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps Tools Introduction #08: Container Infrastructure\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#website\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/\",\"name\":\"Linux Professional Institute (LPI)\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#organization\",\"name\":\"Linux Professional Institute (LPI)\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"width\":496,\"height\":175,\"caption\":\"Linux Professional Institute (LPI)\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/LPIConnect\",\"https:\\\/\\\/x.com\\\/lpiconnect\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/35136\",\"https:\\\/\\\/www.instagram.com\\\/lpi_org\\\/\",\"https:\\\/\\\/fosstodon.org\\\/@LPI\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/ja\\\/#\\\/schema\\\/person\\\/87a340eca845e18d801667fd11e6937c\",\"name\":\"Fabian Thorns\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg583c90110e404d4e42f0be7307753074\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg\",\"caption\":\"Fabian Thorns\"},\"description\":\"Fabian Thorns is the Director of Product Development at Linux Professional Institute, LPI. He is M.Sc. Business Information Systems, a regular speaker at open source events and the author of numerous articles and books. Fabian has been part of the exam development team since 2010. Connect with him on LinkedIn, XING\u00a0or via email (fthorns\u00a0at\u00a0www.lpi.org).\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"DevOps Tools Introduction #08: Container Infrastructure - Linux Professional Institute (LPI)","description":"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lpi.org\/ja\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/","og_locale":"ja_JP","og_type":"article","og_title":"DevOps Tools Introduction #08: Container Infrastructure","og_description":"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.","og_url":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/","og_site_name":"Linux Professional Institute (LPI)","article_publisher":"https:\/\/www.facebook.com\/LPIConnect","article_published_time":"2026-03-10T17:35:18+00:00","article_modified_time":"2026-03-17T14:47:39+00:00","og_image":[{"width":1440,"height":994,"url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg","type":"image\/jpeg"}],"author":"Fabian Thorns, Uir\u00e1 Ribeiro","twitter_card":"summary_large_image","twitter_creator":"@lpiconnect","twitter_site":"@lpiconnect","twitter_misc":{"\u57f7\u7b46\u8005":"Fabian Thorns","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"5\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#article","isPartOf":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/"},"author":{"name":"Fabian Thorns","@id":"https:\/\/www.lpi.org\/ja\/#\/schema\/person\/87a340eca845e18d801667fd11e6937c"},"headline":"DevOps Tools Introduction #08: Container Infrastructure","datePublished":"2026-03-10T17:35:18+00:00","dateModified":"2026-03-17T14:47:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/"},"wordCount":949,"commentCount":0,"publisher":{"@id":"https:\/\/www.lpi.org\/ja\/#organization"},"image":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg","articleSection":["- None -"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/","url":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/","name":"DevOps Tools Introduction #08: Container Infrastructure - Linux Professional Institute (LPI)","isPartOf":{"@id":"https:\/\/www.lpi.org\/ja\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#primaryimage"},"image":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg","datePublished":"2026-03-10T17:35:18+00:00","dateModified":"2026-03-17T14:47:39+00:00","description":"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps.","breadcrumb":{"@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#primaryimage","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/03\/article-DevOps-Tools-Engineer-v2-Introduction-02-08.jpg","width":1440,"height":994,"caption":"Container infrastructure explained: building OCI images, Dockerfiles, registries, and security practices for DevOps."},{"@type":"BreadcrumbList","@id":"https:\/\/www.lpi.org\/blog\/2026\/03\/10\/devops-tools-introduction-08-container-infrastructure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lpi.org\/ja\/"},{"@type":"ListItem","position":2,"name":"DevOps Tools Introduction #08: Container Infrastructure"}]},{"@type":"WebSite","@id":"https:\/\/www.lpi.org\/ja\/#website","url":"https:\/\/www.lpi.org\/ja\/","name":"Linux Professional Institute (LPI)","description":"","publisher":{"@id":"https:\/\/www.lpi.org\/ja\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lpi.org\/ja\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/www.lpi.org\/ja\/#organization","name":"Linux Professional Institute (LPI)","url":"https:\/\/www.lpi.org\/ja\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.lpi.org\/ja\/#\/schema\/logo\/image\/","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","width":496,"height":175,"caption":"Linux Professional Institute (LPI)"},"image":{"@id":"https:\/\/www.lpi.org\/ja\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LPIConnect","https:\/\/x.com\/lpiconnect","https:\/\/www.linkedin.com\/company\/35136","https:\/\/www.instagram.com\/lpi_org\/","https:\/\/fosstodon.org\/@LPI"]},{"@type":"Person","@id":"https:\/\/www.lpi.org\/ja\/#\/schema\/person\/87a340eca845e18d801667fd11e6937c","name":"Fabian Thorns","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg583c90110e404d4e42f0be7307753074","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","caption":"Fabian Thorns"},"description":"Fabian Thorns is the Director of Product Development at Linux Professional Institute, LPI. He is M.Sc. Business Information Systems, a regular speaker at open source events and the author of numerous articles and books. Fabian has been part of the exam development team since 2010. Connect with him on LinkedIn, XING\u00a0or via email (fthorns\u00a0at\u00a0www.lpi.org)."}]}},"views":635,"authors":[{"term_id":540,"user_id":66,"is_guest":0,"slug":"fthornslpi-org","display_name":"Fabian Thorns","avatar_url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":571,"user_id":109,"is_guest":0,"slug":"uira-ribeiro","display_name":"Uir\u00e1 Ribeiro","avatar_url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2024\/07\/cropped-cropped-uria-ribeiro-220x220-1-96x96.jpg","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/posts\/36675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/comments?post=36675"}],"version-history":[{"count":2,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/posts\/36675\/revisions"}],"predecessor-version":[{"id":36918,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/posts\/36675\/revisions\/36918"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/media\/36676"}],"wp:attachment":[{"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/media?parent=36675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/categories?post=36675"},{"taxonomy":"country","embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/country?post=36675"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/language?post=36675"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.lpi.org\/ja\/wp-json\/wp\/v2\/ppma_author?post=36675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}