<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Container Runtimes on Flatcar Container Linux</title>
    <link>/docs/latest/container-runtimes/</link>
    <description>Recent content in Container Runtimes on Flatcar Container Linux</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Copyright © The Flatcar Project Contributors.

Copyright © Flatcar a Series of LF Projects, LLC.

For website terms of use, trademark policy and other project policies please see &lt;a href=&#34;https://lfprojects.org/policies/&#34;&gt;lfprojects.org/policies&lt;/a&gt;.
</copyright>
    <lastBuildDate>Thu, 13 Feb 2025 16:30:38 -0500</lastBuildDate>
    <atom:link href="/docs/latest/container-runtimes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Getting started with Docker</title>
      <link>/docs/latest/container-runtimes/getting-started-with-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/getting-started-with-docker/</guid>
      <description>&lt;p&gt;Docker is an open-source project that makes creating and managing Linux containers really easy. Containers are like extremely lightweight VMs – they allow code to run in isolation from other containers but safely share the machine’s resources, all without the overhead of a hypervisor.&lt;/p&gt;&#xA;&lt;p&gt;Docker containers can boot extremely fast (in milliseconds!) which gives you unprecedented flexibility in managing load across your cluster. For example, instead of running chef on each of your VMs, it’s faster and more reliable to have your build system create a container and launch it on the appropriate number of Flatcar Container Linux hosts. This guide will show you how to launch a container, install some software on it, commit that container, and optionally launch it on another Flatcar Container Linux machine. Before starting, make sure you&amp;rsquo;ve got at least one Flatcar Container Linux machine up and running — try it on &#xA;&#xA;&#xA;&lt;a href=&#34;/docs/latest/installing/cloud/aws-ec2/&#34;&gt;Amazon EC2&lt;/a&gt;&#xA; or locally with &#xA;&#xA;&#xA;&lt;a href=&#34;/docs/latest/installing/vms/vagrant/&#34;&gt;Vagrant&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with Kubernetes</title>
      <link>/docs/latest/container-runtimes/getting-started-with-kubernetes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/getting-started-with-kubernetes/</guid>
      <description>&lt;p&gt;One of the Flatcar purposes is to run container workloads, this term is quite generic: it goes from running a single Docker container to operate a Kubernetes cluster.&lt;/p&gt;&#xA;&lt;p&gt;This documentation will cover preliminary aspects of operating Kubernetes cluster based on Flatcar.&lt;/p&gt;&#xA;&lt;h1 id=&#34;supported-kubernetes-version&#34;&gt;Supported Kubernetes version&lt;/h1&gt;&#xA;&lt;p&gt;A Kubernetes basic scenario (deploy a simple Nginx) is being tested on Flatcar accross the channels and various CNIs, it mainly ensures that Kubernetes can be correctly installed and can operate in a simple way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Incus</title>
      <link>/docs/latest/container-runtimes/incus/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/incus/</guid>
      <description>&lt;p&gt;While Flatcar proposes Containerd and Docker by default, &#xA;&#xA;&#xA;&lt;a href=&#34;https://linuxcontainers.org/incus/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Incus&lt;/a&gt;&#xA; can be used to run containers. The goal of this guide is not to re-write the Incus documentation but to give key aspects of Incus usage on Flatcar.&lt;/p&gt;&#xA;&lt;h1 id=&#34;installing-incus&#34;&gt;Installing Incus&lt;/h1&gt;&#xA;&lt;p&gt;Incus is provided as an &#xA;&#xA;&#xA;&lt;a href=&#34;https://www.flatcar.org/docs/latest/provisioning/sysext/#flatcar-release-extensions-official&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official&lt;/a&gt;&#xA; Systemd sysext Flatcar extension. To install it automatically at boot:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;# config.yaml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;# butane &amp;lt; config.yaml &amp;gt; config.json&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;variant: flatcar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;version: 1.1.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;storage:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  files:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - path: /etc/subuid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      append:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - inline: |&lt;span style=&#34;color:#a31515&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a31515&#34;&gt;            root:1065536:65536&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - path: /etc/subgid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      append:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - inline: |&lt;span style=&#34;color:#a31515&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a31515&#34;&gt;            root:1065536:65536&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - path: /etc/flatcar/enabled-sysext.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      contents:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        inline: |&lt;span style=&#34;color:#a31515&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a31515&#34;&gt;          incus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the instance booted, &lt;code&gt;incus&lt;/code&gt; command is available and &lt;code&gt;incus.{socket,service}&lt;/code&gt; are started. Note: the &lt;code&gt;core&lt;/code&gt; user is added by default to the &lt;code&gt;incus-admin&lt;/code&gt; group.&lt;/p&gt;</description>
    </item>
    <item>
      <title>High Availability Kubernetes</title>
      <link>/docs/latest/container-runtimes/high-availability-kubernetes/</link>
      <pubDate>Thu, 13 Feb 2025 16:30:38 -0500</pubDate>
      <guid>/docs/latest/container-runtimes/high-availability-kubernetes/</guid>
      <description>&lt;p&gt;After you have created a kubernetes cluster using the &#xA;&#xA;&#xA;&lt;a href=&#34;/docs/latest/container-runtimes/getting-started-with-kubernetes/&#34;&gt;getting started&#xA;guide&lt;/a&gt;&#xA;, we can take a look at a more&#xA;complex example that involves a highly available control plane nodes and&#xA;dedicated worker nodes.  The result will be similar to a &#xA;&#xA;&#xA;&lt;a href=&#34;https://typhoon.psdn.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Typhoon&lt;/a&gt;&#xA;&#xA;cluster, but this version will be a little more &amp;ldquo;vanilla&amp;rdquo; and will run on&#xA;libvirt VMs, which is not mentioned in their documentation as of time of&#xA;writing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;This documentation will walk you through creating 5 VMs with the following&#xA;properties:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switching to Unified Cgroups</title>
      <link>/docs/latest/container-runtimes/switching-to-unified-cgroups/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/switching-to-unified-cgroups/</guid>
      <description>&lt;p&gt;Beginning with Flatcar version 2969.0.0, Flatcar Linux has migrated to the unified&#xA;cgroup hierarchy (aka cgroup v2). Much of the container ecosystem has already&#xA;moved to default to cgroup v2. Cgroup v2 brings exciting new features in&#xA;areas such as eBPF and rootless containers.&lt;/p&gt;&#xA;&lt;p&gt;Flatcar nodes deployed prior to this change will be kept on cgroups v1 (legacy&#xA;hierarchy) and will require manual migration. During an update from an older&#xA;Flatcar version, a post update script does two things:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Customizing Docker</title>
      <link>/docs/latest/container-runtimes/customizing-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/customizing-docker/</guid>
      <description>&lt;p&gt;The Docker systemd unit can be customized by overriding the unit that ships with the default Flatcar Container Linux settings or through a drop-in unit. Common use-cases for doing this are covered below.&lt;/p&gt;&#xA;&lt;p&gt;For switching to using containerd with Kubernetes, there is an &#xA;&#xA;&#xA;&lt;a href=&#34;../switching-from-docker-to-containerd-for-kubernetes/&#34;&gt;extra guide&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-a-custom-containerd-configuration&#34;&gt;Use a custom containerd configuration&lt;/h2&gt;&#xA;&lt;p&gt;The default configuration under &lt;code&gt;/usr/share/containerd/config.toml&lt;/code&gt; can&amp;rsquo;t be changed but you can copy it to &lt;code&gt;/etc/containerd/config.toml&lt;/code&gt; and modify it.&lt;/p&gt;&#xA;&lt;p&gt;Create a &lt;code&gt;/etc/systemd/system/containerd.service.d/10-use-custom-config.conf&lt;/code&gt; unit drop-in file to select the new configuration:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Authenticating to Container Registries</title>
      <link>/docs/latest/container-runtimes/registry-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/latest/container-runtimes/registry-authentication/</guid>
      <description>&lt;p&gt;Many container image registries require authentication. This document explains how to configure container management software like Docker, Kubernetes, rkt, and Mesos to authenticate with and pull containers from registries like &#xA;&#xA;&#xA;&lt;a href=&#34;https://quay.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Quay&lt;/a&gt;&#xA; and &#xA;&#xA;&#xA;&lt;a href=&#34;https://hub.docker.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Docker Hub&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;using-a-quay-robot-for-registry-auth&#34;&gt;Using a Quay robot for registry auth&lt;/h2&gt;&#xA;&lt;p&gt;The recommended way to authenticate container manager software with &#xA;&#xA;&#xA;&lt;a href=&#34;https://quay.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;quay.io&lt;/a&gt;&#xA; is via a &#xA;&#xA;&#xA;&lt;a href=&#34;https://docs.quay.io/glossary/robot-accounts.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Quay Robot&lt;/a&gt;&#xA;. The robot account acts as an authentication token with some nice features, including:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Readymade repository authentication configuration files&lt;/li&gt;&#xA;&lt;li&gt;Credentials are limited to specific repositories&lt;/li&gt;&#xA;&lt;li&gt;Choose from read, write, or admin privileges&lt;/li&gt;&#xA;&lt;li&gt;Token regeneration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../img/quay-robot-screen.png&#34; alt=&#34;Quay Robot settings&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
