LinuxKit
Build and publish bootable Linux images for VMs, bare metal, and cloud platforms.
Configuration
yaml
publishers:
- type: linuxkit
config: .core/linuxkit/server.ymlOptions
| Option | Description | Default |
|---|---|---|
config | LinuxKit YAML config | Required |
formats | Output formats | [iso] |
platforms | Target platforms | linux/amd64 |
name | Image name | From config |
Formats
| Format | Description |
|---|---|
iso | Bootable ISO image |
qcow2 | QEMU/KVM image |
raw | Raw disk image |
vhd | Hyper-V image |
vmdk | VMware image |
aws | AWS AMI |
gcp | Google Cloud image |
azure | Azure VHD |
Examples
ISO + QCOW2
yaml
publishers:
- type: linuxkit
config: .core/linuxkit/server.yml
formats:
- iso
- qcow2
platforms:
- linux/amd64
- linux/arm64Cloud Images
yaml
publishers:
- type: linuxkit
config: .core/linuxkit/cloud.yml
formats:
- aws
- gcp
- azureMultiple Configurations
yaml
publishers:
- type: linuxkit
config: .core/linuxkit/minimal.yml
formats: [iso]
name: myapp-minimal
- type: linuxkit
config: .core/linuxkit/full.yml
formats: [iso, qcow2]
name: myapp-fullLinuxKit Config
.core/linuxkit/server.yml:
yaml
kernel:
image: linuxkit/kernel:5.15
cmdline: "console=tty0"
init:
- linuxkit/init:v0.8
- linuxkit/runc:v0.8
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.8
- name: dhcpcd
image: linuxkit/dhcpcd:v0.8
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf"]
services:
- name: myapp
image: myapp:latest
files:
- path: /etc/myapp/config.yaml
contents: |
server:
port: 8080Environment Variables
| Variable | Description |
|---|---|
AWS_ACCESS_KEY_ID | AWS credentials (for AMI publishing) |
AWS_SECRET_ACCESS_KEY | AWS credentials |
GOOGLE_APPLICATION_CREDENTIALS | GCP credentials (for GCP publishing) |
AZURE_CREDENTIALS | Azure credentials (for Azure publishing) |