Running Containers
Example configuration
The following Butane config snippet configures the systemd hello.service
to run busybox.
Example for running busybox using systemd and podman
variant: fcos
version: 1.4.0
systemd:
units:
- name: hello.service
enabled: true
contents: |
[Unit]
Description=MyApp
After=network-online.target
Wants=network-online.target
[Service]
TimeoutStartSec=0
ExecStartPre=-/bin/podman kill busybox1
ExecStartPre=-/bin/podman rm busybox1
ExecStartPre=/bin/podman pull busybox
ExecStart=/bin/podman run --name busybox1 busybox /bin/sh -c "trap 'exit 0' INT TERM; while true; do echo Hello World; sleep 1; done"
[Install]
WantedBy=multi-user.target
Example for running busybox using Podman Quadlet
Podman Quadlet is functionality included in podman that allows starting containers via systemd using a systemd generator. The example below is the same hello.service
that was previously shown but deployed via the Podman Quadlet functionality.
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/containers/systemd/hello.container
contents:
inline: |
[Unit]
Description=Hello Service
Wants=network-online.target
After=network-online.target
[Container]
ContainerName=busybox1
Image=docker.io/busybox
Exec=/bin/sh -c "trap 'exit 0' INT TERM; while true; do echo Hello World; sleep 1; done"
[Install]
WantedBy=multi-user.target
Running etcd
etcd is not shipped as part of Fedora CoreOS. To use it, run it as a container, as shown below.
Butane config for setting up single node etcd
variant: fcos
version: 1.4.0
systemd:
units:
- name: etcd-member.service
enabled: true
contents: |
[Unit]
Description=Run single node etcd
After=network-online.target
Wants=network-online.target
[Service]
ExecStartPre=mkdir -p /var/lib/etcd
ExecStartPre=-/bin/podman kill etcd
ExecStartPre=-/bin/podman rm etcd
ExecStartPre=-/bin/podman pull quay.io/coreos/etcd
ExecStart=/bin/podman run --name etcd --volume /var/lib/etcd:/etcd-data:z --net=host quay.io/coreos/etcd:latest /usr/local/bin/etcd --data-dir /etcd-data --name node1 \
--initial-advertise-peer-urls http://127.0.0.1:2380 --listen-peer-urls http://127.0.0.1:2380 \
--advertise-client-urls http://127.0.0.1:2379 \
--listen-client-urls http://127.0.0.1:2379 \
--initial-cluster node1=http://127.0.0.1:2380
ExecStop=/bin/podman stop etcd
[Install]
WantedBy=multi-user.target
For more information
See the etcd documentation for more information on running etcd in containers and how to set up multi-node etcd.
Want to help? Learn how to contribute to Fedora Docs ›