Introduction
Welcome, intrepid sysadmin, to the Complete Tutorial on installing Container Linux (formerly CoreOS). This guide will walk you through every nitty-gritty detail—from downloading the ISO to launching your first container—all with a dash of humor and plenty of practical wisdom. Ready to tame that Linux beast? Let’s dive in!
What Is Container Linux?
Container Linux is a minimal, immutably configured operating system designed specifically for running containers at scale. It updates itself automatically, making it ideal for cloud-native deployments. Think of it as the perfect runway for your docker images or Podman pods to take off.
Prerequisites
| Component | Requirement | Notes |
|---|---|---|
| CPU | 64-bit x86_64 | Hardware virtualization recommended but not mandatory |
| RAM | 2 GB | 4 GB preferred for container workloads |
| Disk | 20 GB | SSD strongly recommended |
| Network | Ethernet or Wi-Fi | Static or DHCP |
| Boot Media | USB stick or virtual ISO mount | At least 1 GB free |
Step 1: Download the ISO
- Visit the official Container Linux downloads page:
https://getfedora.org/en/coreos/download/. - Choose the ISO image for bare-metal or virtual machines.
- Verify the checksum to ensure integrity:
sha256sum fedora-coreos-xxx.iso
Compare against the published SHA-256 hash.
Step 2: Create Bootable Media
You’ve got the ISO—now let’s burn it to USB!
- Linux/macOS:
sudo dd if=path/to/fedora-coreos.iso of=/dev/sdX bs=4M status=progress sync
- Windows: Use Rufus to flash the ISO.
Step 3: Boot and Configure
Pop the USB in, restart, and select UEFI USB or Legacy USB boot entry. You’ll land in a minimal shell—do not panic, you’re almost there!
3.1 Network Setup
- DHCP: Usually automatic.
- Static IP:
nmcli con add type ethernet ifname eth0 ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
3.2 Disk Partitioning
We’ll use gdisk for GPT partitioning:
gdisk /dev/sda o # create new GPT table n # new partition: EFI (512 MiB, type EF00) n # new partition: system (rest of disk, type 8300) w # write changes and exit
3.3 Formatting
mkfs.fat -F32 /dev/sda1 # EFI mkfs.ext4 /dev/sda2 # root filesystem
Step 4: Ignition Configuration (Optional but Powerful)
Ignition is Container Linux’s cloud-init rival: a JSON-based spec that automates user creation, key injection, and file writes at first boot.
{
ignition: { version: 3.1.0 },
passwd: {
users: [{
name: core,
sshAuthorizedKeys: [ ssh-rsa AAAA... user@host ],
groups: [sudo]
}]
}
}
Save as config.ign and pass to the kernel:
coreos.inst.install_dev=/dev/sda coreos.config.url=file:///config.ign
Step 5: Install to Disk
With partitions ready and (optionally) an Ignition file in place, invoke the installer:
coreos-installer install /dev/sda --ignition-file config.ign
If you skipped Ignition, simply:
coreos-installer install /dev/sda
Step 6: First Boot
- Reboot, remove USB, and watch Container Linux spring to life.
- Log in as core (or your chosen user).
- Confirm network and time sync:
timedatectl status ping -c 3 google.com
Step 7: Post-Install Configuration
7.1 Package Management
Container Linux uses rpm-ostree for atomic upgrades:
rpm-ostree status rpm-ostree update
7.2 Container Runtime
Docker isn’t bundled by default use podman for rootless fun:
podman run --rm hello-world
7.3 Firewall
sudo nft list tables sudo nft add rule inet filter input tcp dport 22 ct state new,established accept
Troubleshooting Tips
- No network? Check journalctl -u NetworkManager.
- Installer fails? Ensure /dev/sda isn’t mounted use lsblk.
- Containers won’t start? Confirm cgroups v2 is enabled:
cat /proc/filesystems grep cgroup2
Wrapping Up
Congratulations, you’ve successfully installed Container Linux! You now have a battle-hardened, self-updating platform tailored for containerized workloads. Remember: play safe with Ignition configs, test updates in a staging environment, and always keep backups (or a second coffee) at hand.
For more deep dives, visit the official docs:
Container Linux Documentation.
Enjoy your sleek, container-optimized OS—now go launch those microservices and make your cluster proud!
Leave a Reply