Bottlerocket — Container-Optimized Linux OS by AWS
A minimal, security-focused Linux distribution built by AWS specifically for running containers. Bottlerocket reduces attack surface with an immutable root filesystem, automatic updates, and API-driven configuration.
What it is
Bottlerocket is a minimal Linux distribution built by AWS specifically for running containers. It reduces the attack surface with an immutable root filesystem, removes unnecessary packages (no shell by default, no package manager), and provides automatic updates with rollback support.
Bottlerocket targets teams running containers on EKS, ECS, or bare metal who want a hardened, low-maintenance host OS. Configuration is done through an API rather than SSH, aligning with infrastructure-as-code practices.
How it saves time or tokens
Traditional container hosts run full Linux distributions (Ubuntu, Amazon Linux) with thousands of packages that need patching. Bottlerocket includes only what containers need, reducing the number of CVEs to track and patch. Automatic updates happen atomically with rollback, eliminating manual OS maintenance.
The API-driven configuration means no SSH sessions, no Ansible playbooks for OS-level settings -- just API calls or user-data at boot.
How to use
- Launch Bottlerocket on AWS EKS:
aws ec2 run-instances \
--image-id resolve:ssm:/aws/service/bottlerocket/aws-k8s-1.29/x86_64/latest/image_id \
--instance-type m5.large \
--key-name my-key \
--user-data file://config.toml
- Configure via TOML user-data:
[settings.kubernetes]
cluster-name = "my-cluster"
api-server = "https://my-eks-endpoint.amazonaws.com"
cluster-certificate = "base64-cert..."
- Nodes join the EKS cluster automatically. No SSH needed for normal operations.
Example
# Check Bottlerocket version via the admin container
# (debug access, disabled by default)
enter-admin-container
apiclient get settings.kubernetes
# Returns cluster configuration
apiclient set settings.ntp.time-servers='["169.254.169.123"]'
# Changes NTP settings via API
# Trigger an update
apiclient update check
apiclient update apply
EKS managed node group with Bottlerocket:
eksctl create nodegroup \
--cluster my-cluster \
--node-ami-family Bottlerocket \
--nodes 3
Related on TokRepo
- AI Tools for DevOps -- Container and infrastructure management tools
- AI Tools for Security -- Security-focused infrastructure tools
Common pitfalls
- Bottlerocket has no shell or package manager by default. If you need to debug, enable the admin container explicitly. This is by design for security.
- Not all EKS add-ons or DaemonSets work out of the box on Bottlerocket. Test your observability and networking agents before rolling out.
- Bottlerocket updates are atomic. If an update fails, the system rolls back to the previous version. Monitor update status via the API.
Frequently Asked Questions
Bottlerocket is built by AWS but supports VMware and bare metal deployments in addition to AWS. The EKS variant is most popular, but other variants exist for different environments.
Not by default. Bottlerocket is designed to be managed via API. An admin container can be enabled for emergency debugging, which provides a shell, but this should not be used for normal operations.
Bottlerocket uses image-based updates. The entire OS partition is replaced atomically, with the previous version kept for rollback. Updates can be triggered via the API or automated through the update operator in Kubernetes.
Yes. Bottlerocket is open-source under Apache 2.0 and MIT licenses. You pay only for the AWS infrastructure (EC2 instances) running it.
Amazon Linux is a general-purpose OS with full package management. Bottlerocket is container-only with a minimal footprint, immutable filesystem, and API-driven configuration. Bottlerocket has fewer CVEs and lower maintenance overhead.
Citations (3)
- Bottlerocket GitHub Repository— Bottlerocket is a container-optimized Linux by AWS
- AWS Bottlerocket Documentation— Immutable root filesystem and API-driven configuration
- Bottlerocket Design— Automatic atomic updates with rollback support
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.