<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xx="categories" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Containers - Ken Muse</title><atom:link href="https://www.kenmuse.com/categories/containers/rss/" rel="self" type="application/rss+xml"/><link>https://www.kenmuse.com/categories/containers/</link><description>Discover Azure, DevOps, and development insights with Ken Muse, a DevOps Architect at GitHub and 4x Microsoft Azure MVP</description><language>en-us</language><sy:updatePeriod>weekly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><image><title>Containers - Ken Muse</title><link>https://www.kenmuse.com/categories/containers/</link><width>32</width><url>https://www.kenmuse.com/categories/containers/favicon/favicon-32x32.png</url><height>32</height></image><atom:link href="https://www.kenmuse.com/categories/containers/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>Pre-Caching Docker Images on GitHub Runner Custom Images</title><link>https://www.kenmuse.com/blog/pre-caching-docker-images-on-github-runner-custom-images/</link><pubDate>Wed, 17 Dec 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">pre-caching-docker-images-on-github-runner-custom-images</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Discover how to improve GitHub Actions performance and drastically cut the time and bandwidth required to use Docker images in your workflows.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/pre-caching-docker-images-on-github-runner-custom-images/images/cached-docker.webp"/></item><item><title>How I Avoided Shai-Hulud's Second Coming (Part 1)</title><link>https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-1/</link><pubDate>Wed, 26 Nov 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">how-i-avoided-shai-hulud-second-coming-part-1</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><category>Security</category><description>Simple security practices that protected my dev environment from the Shai-Hulud supply chain attack -- and how you can use them too.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/how-i-avoided-shai-hulud-second-coming-part-1/images/desert-worm.png"/></item><item><title>Understanding IPv6: From GitHub's IPs to Kubernetes and ARC</title><link>https://www.kenmuse.com/blog/understanding-ipv6-from-github-to-kubernetes-arc/</link><pubDate>Sat, 08 Nov 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">understanding-ipv6-from-github-to-kubernetes-arc</guid><category>Containers</category><category>DevOps</category><category>General</category><description>Learn how IPv6 affects your DevOps workflows, from GitHub's IP ranges to Kubernetes networking, Docker containers, and the latest ARC improvements.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-ipv6-from-github-to-kubernetes-arc/images/docker-desktop.png"/></item><item><title>Adding Help (man) to Buildroot Packages</title><link>https://www.kenmuse.com/blog/adding-help-with-man-to-buildroot-packages/</link><pubDate>Fri, 22 Aug 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">adding-help-with-man-to-buildroot-packages</guid><category>Containers</category><category>DevOps</category><description>A step-by-step guide to adding configurable man page support to custom Buildroot packages, extending the GitHub CLI package with comprehensive documentation.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/adding-help-with-man-to-buildroot-packages/images/menu-ghcli.webp"/></item><item><title>Creating a CodeQL Image for ARC With Python 2</title><link>https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc-with-python-2/</link><pubDate>Thu, 24 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-a-codeql-image-for-arc-with-python-2</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Add Python 2 support to your CodeQL Docker image using multistage builds (and some Docker tricks) to support security scanning in ARC.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc-with-python-2/images/banner.png"/></item><item><title>Creating a CodeQL Image for ARC</title><link>https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc/</link><pubDate>Sat, 19 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-a-codeql-image-for-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Learn how to build a custom Docker image with CodeQL pre-installed for GitHub ARC runners, eliminating download times and ensuring consistent analysis.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-a-codeql-image-for-arc/images/banner2.png"/></item><item><title>Creating a Custom Buildroot Package For Binaries</title><link>https://www.kenmuse.com/blog/creating-a-custom-buildroot-package-for-binaries/</link><pubDate>Fri, 11 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-a-custom-buildroot-package-for-binaries</guid><category>Containers</category><category>DevOps</category><description>A step-by-step guide to creating your first custom Buildroot package for a binary package containing an installable GitHub CLI.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/creating-a-custom-buildroot-package-for-binaries/images/banner.webp"/></item><item><title>Speeding Up the Buildroot Toolchain</title><link>https://www.kenmuse.com/blog/speeding-up-the-buildroot-toolchain/</link><pubDate>Sat, 05 Jul 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">speeding-up-the-buildroot-toolchain</guid><category>Containers</category><category>DevOps</category><description>Speed up your Buildroot builds with prebuilt toolchains, SDK reuse, and CI/CD caching. Enjoy faster results and less frustration!</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/speeding-up-the-buildroot-toolchain/images/toolchain-options.webp"/></item><item><title>Configuring Buildroot for Crafting Images</title><link>https://www.kenmuse.com/blog/configuring-buildroot-for-crafting-images/</link><pubDate>Wed, 25 Jun 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">configuring-buildroot-for-crafting-images</guid><category>Containers</category><category>DevOps</category><description>Learn how to use Buildroot's menu system to create and configure a minimal, Bash-only image for Docker.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/configuring-buildroot-for-crafting-images/images/menu-main.webp"/></item><item><title>Building OCI Images With Buildroot</title><link>https://www.kenmuse.com/blog/building-oci-images-with-buildroot/</link><pubDate>Sat, 21 Jun 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">building-oci-images-with-buildroot</guid><category>Containers</category><category>DevOps</category><description>Build Docker images and OCI packages easily with Buildroot. Learn to automate, customize, and simplify your image creation process.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-oci-images-with-buildroot/images/banner.png"/></item><item><title>Building OCI Images Without Using Docker</title><link>https://www.kenmuse.com/blog/building-oci-images-without-using-docker/</link><pubDate>Fri, 13 Jun 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">building-oci-images-without-using-docker</guid><category>Containers</category><category>DevOps</category><description>Learn what's in an Open Container Image and how to build your own images without Docker using some common command line tools.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-oci-images-without-using-docker/images/banner.png"/></item><item><title>Calling Docker From Inside a GitHub Job Container</title><link>https://www.kenmuse.com/blog/calling-docker-from-inside-a-github-job-container/</link><pubDate>Sat, 24 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">calling-docker-from-inside-a-github-job-container</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Learn to run Docker commands inside a GitHub Actions job container and understand the magic behind how Actions creates and manages job and service containers.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/calling-docker-from-inside-a-github-job-container/images/banner.webp"/></item><item><title>Authenticating Docker in Docker Containers in Kubernetes</title><link>https://www.kenmuse.com/blog/authenticating-docker-in-docker-containers-in-kubernetes/</link><pubDate>Sat, 17 May 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">authenticating-docker-in-docker-containers-in-kubernetes</guid><category>Containers</category><category>DevOps</category><description>Discover how to securely authenticate Docker-in-Docker containers inside Kubernetes to enable private registry access.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/authenticating-docker-in-docker-containers-in-kubernetes/images/banner.png"/></item><item><title>What's New in GitHub Actions Runner Controller</title><link>https://www.kenmuse.com/blog/whats-new-in-github-arc/</link><pubDate>Mon, 31 Mar 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">whats-new-in-github-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>The new version of Actions Runner Controller has performance fixes, improved configurability, and a new approach to metrics. This post reviews those changes.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/whats-new-in-github-arc/images/banner.png"/></item><item><title>Managing Pod Resource Requests and Limits in Kubernetes</title><link>https://www.kenmuse.com/blog/managing-pod-resource-requests-and-limits-in-kubernetes/</link><pubDate>Thu, 02 Jan 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">managing-pod-resource-requests-and-limits-in-kubernetes</guid><category>Containers</category><category>DevOps</category><description>In Kubernetes, we cannot manage resources at the pod level and must resort to setting requests and limits on containers. Learn how that's changing.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/managing-pod-resource-requests-and-limits-in-kubernetes/images/banner.jpg"/></item><item><title>Using A Kubernetes Native Sidecar With GitHub ARC</title><link>https://www.kenmuse.com/blog/using-kubernetes-native-sidecars-with-github-arc/</link><pubDate>Fri, 20 Dec 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">using-kubernetes-native-sidecars-with-github-arc</guid><category>Containers</category><category>DevOps</category><category>GitHub</category><description>Explore how to modernize the Docker-in-Docker support in GitHub Actions Runner Controller (ARC) using the latest Kubernetes feature: native sidecars.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-kubernetes-native-sidecars-with-github-arc/images/banner.png"/></item><item><title>Taking Advantage of Kubernetes Native Sidecars</title><link>https://www.kenmuse.com/blog/taking-advantage-of-kubernetes-native-sidecars/</link><pubDate>Thu, 19 Dec 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">taking-advantage-of-kubernetes-native-sidecars</guid><category>Containers</category><category>DevOps</category><description>Kubernetes has a powerful feature that can help you build more robust deployments. Learn about native sidecars, the problems they solve and how to use them.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/taking-advantage-of-kubernetes-native-sidecars/images/banner.jpg"/></item><item><title>Testing Kubernetes Operators and Controllers With Minikube</title><link>https://www.kenmuse.com/blog/testing-kubernetes-operators-and-controllers-with-minikube/</link><pubDate>Fri, 27 Sep 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">testing-kubernetes-operators-and-controllers-with-minikube</guid><category>Containers</category><category>DevOps</category><description>Sometimes you need to try out a modified image or custom chart you're creating in Kubernetes. Minikube can make that process easier.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/testing-kubernetes-operators-and-controllers-with-minikube/images/banner.png"/></item><item><title>Implementing Private VS Code Extensions for Dev Containers</title><link>https://www.kenmuse.com/blog/implementing-private-vs-code-extensions-for-dev-containers/</link><pubDate>Fri, 20 Sep 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">implementing-private-vs-code-extensions-for-dev-containers</guid><category>Containers</category><category>DevOps</category><category>Programming</category><description>Learn how to implement private Visual Studio code extensions that are designed to support a specific development container or Codespaces environment.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/implementing-private-vs-code-extensions-for-dev-containers/images/banner.png"/></item><item><title>Building Base Images for ARC</title><link>https://www.kenmuse.com/blog/building-base-images-for-arc/</link><pubDate>Thu, 09 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-base-images-for-arc</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you're using Actions Runner Controller, the provided base image may not be enough. Learn what's needed in your image to make your workflows run smoothly.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-base-images-for-arc/images/banner.png"/></item><item><title>Building GitHub Runner Images With an Action Archive Cache</title><link>https://www.kenmuse.com/blog/building-github-actions-runner-images-with-an-action-archive-cache/</link><pubDate>Fri, 29 Mar 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-github-actions-runner-images-with-an-action-archive-cache</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you want to make images for GitHub Actions Runner Controller (ARC) that are fast and network-friendly, learn how to include an Action archive cache.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-github-actions-runner-images-with-an-action-archive-cache/images/banner.png"/></item><item><title>Building GitHub Actions Runner Images With A Tool Cache</title><link>https://www.kenmuse.com/blog/building-github-actions-runner-images-with-a-tool-cache/</link><pubDate>Thu, 28 Mar 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">building-github-actions-runner-images-with-a-tool-cache</guid><category>Containers</category><category>GitHub</category><category>DevOps</category><description>If you want to make an efficient image for GitHub Actions Runner Controller (ARC), you need to first understand how to prepopulate the runner's tool cache.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/building-github-actions-runner-images-with-a-tool-cache/images/banner.png"/></item><item><title>Windows Runners on Actions Runner Controller</title><link>https://www.kenmuse.com/blog/windows-runners-on-actions-runner-controller/</link><pubDate>Thu, 26 Oct 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">windows-runners-on-actions-runner-controller</guid><category>Azure</category><category>GitHub</category><category>Containers</category><category>DevOps</category><description>GitHub's Actions Runner Controller (ARC) does not officially support Windows containers for runners. With a little bit of work, we can make it possible.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/windows-runners-on-actions-runner-controller/images/banner.jpg"/></item><item><title>Improving Dev Container Feature Performance</title><link>https://www.kenmuse.com/blog/improving-dev-container-feature-performance/</link><pubDate>Thu, 01 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">improving-dev-container-feature-performance</guid><category>DevOps</category><category>Containers</category><description>Dev container features provide a quick way to add functionality. The tradeoff for the ease of use is often speed. Learn the tricks to preserving performance.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/improving-dev-container-feature-performance/images/banner.jpg"/></item><item><title>Dubious Ownership With Static Web Apps</title><link>https://www.kenmuse.com/blog/dubious-ownership-with-static-web-apps/</link><pubDate>Thu, 11 May 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">dubious-ownership-with-static-web-apps</guid><category>DevOps</category><category>Containers</category><description>Git's safe directory configuration helps to protect users, but it can create challenges. This is especially true when using Hugo with Azure Static Web Sites.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/dubious-ownership-with-static-web-apps/images/banner.png"/></item><item><title>Implementing Docker Layer Caching in GitHub Actions</title><link>https://www.kenmuse.com/blog/implementing-docker-layer-caching-in-github-actions/</link><pubDate>Thu, 09 Feb 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">implementing-docker-layer-caching-in-github-actions</guid><category>DevOps</category><category>Containers</category><category>GitHub</category><description>Learn how to use the Docker BuildKit gha, inline, and registry layer caching with GHCR, and GitHub Actions to improve build performance.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/implementing-docker-layer-caching-in-github-actions/images/banner.jpg"/></item><item><title>Implementing Docker-from-Docker for Non-Root Users</title><link>https://www.kenmuse.com/blog/implementing-docker-from-docker-for-nonroot-users/</link><pubDate>Tue, 31 Jan 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">implementing-docker-from-docker-for-nonroot-users</guid><category>DevOps</category><category>Containers</category><description>Dive deeper into dev container Features and Linux scripting to create an entrypoint for the non-root users.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/implementing-docker-from-docker-for-nonroot-users/images/banner.jpg"/></item><item><title>Improving Docker-From-Docker With Features</title><link>https://www.kenmuse.com/blog/improving-docker-from-docker-with-features/</link><pubDate>Thu, 26 Jan 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">improving-docker-from-docker-with-features</guid><category>DevOps</category><category>Containers</category><description>Sometimes scripting in containers just isn't enough. If you need modular, reusable components for repeatable practices, you may need to implement a Feature.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/improving-docker-from-docker-with-features/images/banner.jpg"/></item><item><title>Intro to Dev Container Features</title><link>https://www.kenmuse.com/blog/intro-to-dev-container-features/</link><pubDate>Sat, 21 Jan 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">intro-to-dev-container-features</guid><category>DevOps</category><category>Containers</category><description>Explore the basics of the specification and how it lets you create reusable components for your dev containers.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/intro-to-dev-container-features/images/banner.jpg"/></item><item><title>Docker-from-Docker in Alpine Dev Containers</title><link>https://www.kenmuse.com/blog/docker-from-docker-in-alpine-dev-containers/</link><pubDate>Thu, 05 Jan 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">docker-from-docker-in-alpine-dev-containers</guid><category>DevOps</category><category>Containers</category><description>In this post, we'll see if we can run some Docker commands from inside our Alpine dev container using Docker-from-Docker and a bit of configuration.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/docker-from-docker-in-alpine-dev-containers/images/banner.jpg"/></item><item><title>Fast Start Dev Containers</title><link>https://www.kenmuse.com/blog/fast-start-dev-containers/</link><pubDate>Thu, 29 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">fast-start-dev-containers</guid><category>Containers</category><description>&lt;p&gt;In last week&amp;rsquo;s article,
&lt;a class="" href="https://www.kenmuse.com/blog/using-the-docker-cache/" target="_self"&gt;Using the Docker Cache&lt;/a&gt;, we learned that we can take advantage of the Docker cache to reduce our build times. There&amp;rsquo;s another advantage to using that cache. We can reduce the time it takes to spin-up a dev container!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s almost Halloween, so you&amp;rsquo;re probably thinking &amp;ldquo;this must be some kind of witchcraft!&amp;rdquo;. Almost. It&amp;rsquo;s a configuration setting in the &lt;code&gt;devcontainer.json&lt;/code&gt; file. If you&amp;rsquo;re referencing a Dockerfile and building an image dynamically, you can take advantage of the
&lt;a class="external-link" href="https://containers.dev/implementors/json_reference/" arial-label="The build.cacheFrom link opens in a new tab" target="_blank"&gt;&lt;code&gt;build.cacheFrom&lt;/code&gt;&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; setting. This is passed to the docker build process as the &lt;code&gt;--cache-from&lt;/code&gt; parameter. By providing a value, we enable the development environment to use cached layers. For example:&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/fast-start-dev-containers/images/banner.jpg"/></item><item><title>Using the Docker Cache for Faster Builds</title><link>https://www.kenmuse.com/blog/using-the-docker-cache/</link><pubDate>Thu, 22 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">using-the-docker-cache</guid><category>Containers</category><description>&lt;p&gt;Did you know that Docker has multiple built-in caches for making if faster and easier for you to build images? If not, you&amp;rsquo;ve been missing out on some performance possibilities! Modern docker builds rely on
&lt;a class="external-link" href="https://github.com/moby/buildkit" arial-label="The Buildkit link opens in a new tab" target="_blank"&gt;Buildkit&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt;, a feature of Docker that enables high-performance builds. This includes support for storing and consuming layers by using caches.&lt;/p&gt;
&lt;p&gt;Caches are different from the pull-through functionality commonly discussed in other blogs. Instead of needing you to setup your own Docker registry, they enable you to read and write layer details in a way that enables faster builds. If you weren&amp;rsquo;t aware of this &amp;ndash; no worries! Surprisingly, most people aren&amp;rsquo;t. And even fewer people realize these caches work with other tools, such as dev containers and GitHub Actions. Part of the reason is that it&amp;rsquo;s tough finding a good explanation of these caches or how to use them. Hopefully today we can resolve part of that problem.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/using-the-docker-cache/images/banner.jpg"/></item><item><title>Waiting for Docker Compose Up</title><link>https://www.kenmuse.com/blog/waiting-for-docker-compose-up/</link><pubDate>Thu, 15 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">waiting-for-docker-compose-up</guid><category>Containers</category><description>&lt;p&gt;If you&amp;rsquo;ve worked with Docker Compose in the past, you may have used a number of tricks to make sure that the containers were stable and running before moving on to further steps. For example, you might periodically ping the service. If the attempt fails, you simply sleep and retry until you get the expected results.&lt;/p&gt;
&lt;p&gt;A short time ago, the Docker team offered an easier approach to solving this problem. &lt;em&gt;Just wait for it.&lt;/em&gt; More to the point, they added the &lt;code&gt;--wait&lt;/code&gt; command. This ensures that &lt;code&gt;docker compose up&lt;/code&gt; waits for your services to be healthy before returning control to the caller. This can be helpful, especially if you&amp;rsquo;re using Compose to automate other processes.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/waiting-for-docker-compose-up/images/banner.jpg"/></item><item><title>Forcing Dev Containers To Use AMD64</title><link>https://www.kenmuse.com/blog/forcing-dev-container-to-use-amd64/</link><pubDate>Thu, 01 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">forcing-dev-container-to-use-amd64</guid><category>DevOps</category><category>Containers</category><description>&lt;p&gt;While there are many things to like about Apple&amp;rsquo;s laptops, one of the more frustrating aspects is the number of applications and images that are not designed to support ARM processors. Over the last few years, we&amp;rsquo;ve seen ARM chips suddenly surge into mainstream laptops and servers. It makes sense – the chipsets offer high performance at a low cost.&lt;/p&gt;
&lt;p&gt;Sadly, not all containers and applications have been updated to support the additional architecture. This means that we often have to accommodate these tools. Dev containers add an additional challenge. They limit what build arguments we can provide, preventing us from taking control of parts of the process (such as the architecture). For example, while I can include the current Azure CLI in my &lt;code&gt;arm64&lt;/code&gt; images, the consistently fails to work because portions of the package target Intel/AMD chipsets. I have to rely on &lt;code&gt;amd64&lt;/code&gt;.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/forcing-dev-container-to-use-amd64/images/banner.jpg"/></item><item><title>Marking Workspaces Safe with Dotfiles</title><link>https://www.kenmuse.com/blog/marking-workspaces-safe/</link><pubDate>Thu, 18 Aug 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">marking-workspaces-safe</guid><category>DevOps</category><category>Containers</category><description>There's a great way to use dotfiles to eliminate the "detected dubious ownership in repository" message in every dev container automatically.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/marking-workspaces-safe/images/banner.jpg"/></item><item><title>Avoiding Dubious Ownership in Dev Containers</title><link>https://www.kenmuse.com/blog/avoiding-dubious-ownership-in-dev-containers/</link><pubDate>Thu, 11 Aug 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">avoiding-dubious-ownership-in-dev-containers</guid><category>DevOps</category><category>Containers</category><description>Getting the message "detected dubious ownership in repository" in your dev container? Learn how to eliminate this error.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/avoiding-dubious-ownership-in-dev-containers/images/banner.jpg"/></item><item><title>Dev Containers and AWS Credentials</title><link>https://www.kenmuse.com/blog/dev-containers-and-aws-credentials/</link><pubDate>Wed, 03 Aug 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">dev-containers-and-aws-credentials</guid><category>DevOps</category><category>Containers</category><description>Did you know it's possible to share your AWS credentials between your host computer and your Dev Containers? Once again we explore the power of Docker mounts!</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/dev-containers-and-aws-credentials/images/banner.jpg"/></item><item><title>Dev Containers and node_modules</title><link>https://www.kenmuse.com/blog/dev-containers-and-node_modules/</link><pubDate>Wed, 27 Jul 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">dev-containers-and-node_modules</guid><category>DevOps</category><category>Containers</category><description>There's a trick you can use with dev containers and Docker volumes to make it easier to manage your node_modules folder.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/dev-containers-and-node_modules/images/banner.jpg"/></item><item><title>Publishing Images With GitHub Actions</title><link>https://www.kenmuse.com/blog/publishing-images-with-github-actions/</link><pubDate>Thu, 09 Jun 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">publishing-images-with-github-actions</guid><category>DevOps</category><category>Containers</category><category>GitHub</category><description>Learn how to publish OCI and Docker images to Azure and GHCR using GitHub Actions and OIDC.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/publishing-images-with-github-actions/images/banner.jpg"/></item><item><title>Running Hugo in macOS Dev Containers</title><link>https://www.kenmuse.com/blog/running-hugo-in-macos-dev-containers/</link><pubDate>Thu, 05 May 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">running-hugo-in-macos-dev-containers</guid><category>DevOps</category><category>Containers</category><description>Learn how to create optimized containers that work well for both ARM64 and AMD64 platforms.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/running-hugo-in-macos-dev-containers/images/banner.jpg"/></item><item><title>Deploying to Azure from Private Container Registries</title><link>https://www.kenmuse.com/blog/deploying-to-azure-from-private-container-registries/</link><pubDate>Thu, 17 Mar 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">deploying-to-azure-from-private-container-registries</guid><category>Azure</category><category>Containers</category><category>GitHub</category><category>DevOps</category><description>How to use private registries and GitHub Container Registry with services like Azure Container Instances, Azure App Services, and Azure Container Apps.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/deploying-to-azure-from-private-container-registries/images/banner.jpg"/></item><item><title>Azure Container Solutions</title><link>https://www.kenmuse.com/blog/azure-container-solutions/</link><pubDate>Mon, 07 Mar 2022 00:00:00 -0500</pubDate><guid isPermaLink="false">azure-container-solutions</guid><category>Azure</category><category>Containers</category><description>Understand the different Azure containerization options and how to pick the right one for your job.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/azure-container-solutions/images/banner.jpg"/></item><item><title>Have It Your Way - The Magic of dotfiles</title><link>https://www.kenmuse.com/blog/the-magic-of-dotfiles/</link><pubDate>Thu, 20 Jan 2022 00:00:00 -0500</pubDate><guid isPermaLink="false">the-magic-of-dotfiles</guid><category>DevOps</category><category>Containers</category><description>Have your favorite configurations follow you in your Dev Containers by creating a dotfiles Git repository.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/the-magic-of-dotfiles/images/banner.jpg"/></item><item><title>Containers and the WSL2 File System</title><link>https://www.kenmuse.com/blog/containers-and-wsl2-filesystem/</link><pubDate>Wed, 22 Dec 2021 00:00:00 -0500</pubDate><guid isPermaLink="false">containers-and-wsl2-filesystem</guid><category>Containers</category><category>DevOps</category><description>Learn how to optimize your development container performance by working in the right filesystem in WSL2.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/containers-and-wsl2-filesystem/images/banner.jpg"/></item><item><title>Using Development Containers</title><link>https://www.kenmuse.com/blog/using-development-containers/</link><pubDate>Tue, 19 Oct 2021 00:00:00 -0400</pubDate><guid isPermaLink="false">using-development-containers</guid><category>Containers</category><category>DevOps</category><description>Learn how to implement development environments using infrastructure-as-code with Dev Containers, Codespaces, and Gitpod!</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/using-development-containers/images/banner.jpg"/></item><item><title>Automating SQL Server 2019 Docker Deployments</title><link>https://www.kenmuse.com/blog/automating-sql-server-2019-docker-deployments/</link><pubDate>Sat, 07 Mar 2020 00:00:00 -0500</pubDate><guid isPermaLink="false">automating-sql-server-2019-docker-deployments</guid><category>DevOps</category><category>Containers</category><description>&lt;p&gt;In a previous article, I walked through
&lt;a class="" href="https://www.kenmuse.com/blog/devops-sql-server-dacpac-docker/" target="_self"&gt;deploying to SQL Server 2017 containers&lt;/a&gt; and provided an overview of deploying DACPACs and BACPACs in containers. Since that time, SQL Server 2019 has been released; this requires a few changes to the approach. In this article, we&amp;rsquo;ll look at what changes you need to make to deploy to a 2019 container.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with the code, then examine what&amp;rsquo;s changed.&lt;/p&gt;
&lt;div class=""&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-docker" data-lang="docker"&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-1"&gt;&lt;a class="lnlinks" href="#hl-0-1"&gt; 1 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mcr.microsoft.com/mssql/server:2019-latest&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-2"&gt;&lt;a class="lnlinks" href="#hl-0-2"&gt; 2 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-3"&gt;&lt;a class="lnlinks" href="#hl-0-3"&gt; 3 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Elevate to root to install required packages&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-4"&gt;&lt;a class="lnlinks" href="#hl-0-4"&gt; 4 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;root&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-5"&gt;&lt;a class="lnlinks" href="#hl-0-5"&gt; 5 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; apt-get update &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-6"&gt;&lt;a class="lnlinks" href="#hl-0-6"&gt; 6 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get install unzip libunwind8 libicu55 -y&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-7"&gt;&lt;a class="lnlinks" href="#hl-0-7"&gt; 7 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-8"&gt;&lt;a class="lnlinks" href="#hl-0-8"&gt; 8 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Install SQLPackage for Linux and make it executable&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-9"&gt;&lt;a class="lnlinks" href="#hl-0-9"&gt; 9 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; wget -progress&lt;span class="o"&gt;=&lt;/span&gt;bar:force -q -O sqlpackage.zip https://go.microsoft.com/fwlink/?linkid&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2113331&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-10"&gt;&lt;a class="lnlinks" href="#hl-0-10"&gt; 10 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; unzip -qq sqlpackage.zip -d /opt/sqlpackage &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-11"&gt;&lt;a class="lnlinks" href="#hl-0-11"&gt; 11 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x /opt/sqlpackage/sqlpackage &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-12"&gt;&lt;a class="lnlinks" href="#hl-0-12"&gt; 12 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chown -R mssql /opt/sqlpackage &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-13"&gt;&lt;a class="lnlinks" href="#hl-0-13"&gt; 13 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mkdir /tmp/db &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-14"&gt;&lt;a class="lnlinks" href="#hl-0-14"&gt; 14 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chown -R mssql /tmp/db&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-15"&gt;&lt;a class="lnlinks" href="#hl-0-15"&gt; 15 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-16"&gt;&lt;a class="lnlinks" href="#hl-0-16"&gt; 16 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Lower the privilege&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-17"&gt;&lt;a class="lnlinks" href="#hl-0-17"&gt; 17 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;mssql&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-18"&gt;&lt;a class="lnlinks" href="#hl-0-18"&gt; 18 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-19"&gt;&lt;a class="lnlinks" href="#hl-0-19"&gt; 19 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Add the DACPAC to the image&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-20"&gt;&lt;a class="lnlinks" href="#hl-0-20"&gt; 20 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;COPY&lt;/span&gt; site.bacpac /tmp/db/db.bacpac&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-21"&gt;&lt;a class="lnlinks" href="#hl-0-21"&gt; 21 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-22"&gt;&lt;a class="lnlinks" href="#hl-0-22"&gt; 22 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Configure external build arguments to allow configurability.&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-23"&gt;&lt;a class="lnlinks" href="#hl-0-23"&gt; 23 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ARG&lt;/span&gt; &lt;span class="nv"&gt;DBNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Database
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-24"&gt;&lt;a class="lnlinks" href="#hl-0-24"&gt; 24 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ARG&lt;/span&gt; PASSWORD&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-25"&gt;&lt;a class="lnlinks" href="#hl-0-25"&gt; 25 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-26"&gt;&lt;a class="lnlinks" href="#hl-0-26"&gt; 26 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Configure the required environmental variables&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-27"&gt;&lt;a class="lnlinks" href="#hl-0-27"&gt; 27 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ENV&lt;/span&gt; &lt;span class="nv"&gt;ACCEPT_EULA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-28"&gt;&lt;a class="lnlinks" href="#hl-0-28"&gt; 28 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ENV&lt;/span&gt; &lt;span class="nv"&gt;SA_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PASSWORD&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-29"&gt;&lt;a class="lnlinks" href="#hl-0-29"&gt; 29 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-30"&gt;&lt;a class="lnlinks" href="#hl-0-30"&gt; 30 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Launch SQL Server, confirm startup is complete, deploy the DACPAC, then terminate SQL Server.&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-31"&gt;&lt;a class="lnlinks" href="#hl-0-31"&gt; 31 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# See https://stackoverflow.com/a/51589787/488695&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-32"&gt;&lt;a class="lnlinks" href="#hl-0-32"&gt; 32 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; /opt/mssql/bin/sqlservr &lt;span class="p"&gt;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -q &lt;span class="s2"&gt;&amp;#34;Service Broker manager has started&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-33"&gt;&lt;a class="lnlinks" href="#hl-0-33"&gt; 33 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; /opt/sqlpackage/sqlpackage /a:Import /tsn:. /tdn:&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DBNAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; /tu:sa /tp:&lt;span class="nv"&gt;$SA_PASSWORD&lt;/span&gt; /sf:/tmp/db/db.bacpac &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-34"&gt;&lt;a class="lnlinks" href="#hl-0-34"&gt; 34 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -r /tmp/db &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-35"&gt;&lt;a class="lnlinks" href="#hl-0-35"&gt; 35 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkill sqlservr &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln" id="hl-0-36"&gt;&lt;a class="lnlinks" href="#hl-0-36"&gt; 36 &lt;/a&gt;&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -r /opt/sqlpackage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;To begin with, you will need to use a SQL Server 2019 image, such as &lt;code&gt;2019-latest&lt;/code&gt;. There is a
&lt;a class="external-link" href="https://hub.docker.com/_/microsoft-mssql-server" arial-label="The complete list of images link opens in a new tab" target="_blank"&gt;complete list of images&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt;, which includes specific releases of SQL Server that you can use. Microsoft documents
&lt;a class="external-link" href="https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&amp;amp;WT.mc_id=DT-MVP-5003035" arial-label="The installing and connecting to SQL Server 2019 on Docker link opens in a new tab" target="_blank"&gt;installing and connecting to SQL Server 2019 on Docker&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; if you want to learn more about working with the containerized version of SQL Server. The Microsoft docs site also provides a guide to
&lt;a class="external-link" href="https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-ver15&amp;amp;WT.mc_id=DT-MVP-5003035" arial-label="The configuring Docker containers link opens in a new tab" target="_blank"&gt;configuring Docker containers&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt;. The default Linux image is based on Ubuntu, but
&lt;a class="external-link" href="https://access.redhat.com/containers/?tab=overview#/mcr.microsoft.com/mssql/rhel/server" arial-label="The official RHEL images link opens in a new tab" target="_blank"&gt;official RHEL images&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; are also available.&lt;/p&gt;</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/automating-sql-server-2019-docker-deployments/images/banner.png"/></item></channel></rss>