Docker Anaconda addon¶
Authors: | Brian C. Lane <bcl@redhat.com> |
---|
This addon adds a kickstart %addon section named com_redhat_docker
to
Anaconda that allows the user to run docker on their newly installed system
before rebooting. There is no GUI or TUI interface for this, everything is
done via the kickstart.
In order to use this addon you need an Anaconda boot.iso that has been built with
the addon and a kickstart with the %addon com_redhat_docker
section.
The Kickstart¶
The kickstart needs to setup the storage, include docker in the installation, and run whatever docker commands are needed to install and configure images. It should stop any running containers before the end of the section.
Storage¶
There are 3 options for storage, LVM thin-pool, BTRFS, and OverlayFS. OverlayFS
is simpler, using the host filesystem from /var/lib/docker/
but it doesn’t
support selinux inside the containers. Pass --overlay
to the addon to
enable it.
BTRFS requires that /var/lib/docker/
or one of its parents are on a BTRFS
volume, and it supports SELinux inside the containers. Pass --btrfs
to the
addon to enable it.
eq:
part btrfs.10 --fstype btrfs --size=10000
btrfs none --label=docker-btrfs btrfs.10
btrfs /var/lib/docker --subvol --name=docker docker-btrfs
The other option is a LVM thin-pool named ‘docker-pool’, the VG used
can be anything, but the VG name needs to be passed to the addon with the
--vgname
argument. The storage setup will be verified and then the docker
daemon will be started.
eg.:
part pv.2 --fstype=lvmpv --size=1 --grow
volgroup docker pv.2
logvol none --name=docker-pool --vgname=docker --size=8000 --thinpool
Addon Section¶
The addon command arguments depend on which storage driver you are using.
OverlayFS is simply --overlay
, which will also remove --selinux-enabled
from the /etc/sysconfig/docker
OPTIONS variable if it is present because
the overlay doesn’t support selinux inside the containers.
BTRFS is just --btrfs
, and the kickstart needs to make sure
/var/lib/docker/
or one of its parents is on a BTRFS volume.
When using LVM it requires --vgname=VGNAME
to specify the name of the VG
containing a LV thin-pool named docker-pool. Optionally you can add
--fstype=FSNAME
to specify the filesystem type to use with the pool. eg.
xfs, ext4. The default is xfs. You can pass any other arguments to the docker
daemon command by adding them to the end of the addon command, after --
,
like this:
%addon com_redhat_docker --vgname=docker --fstype=xfs -- --add-registry docker.foo.bar
Commands inside the addon section are run as a bash shell in the installer
environment (just like a %post --nochroot
) so that it is flexible enough to
accomplish whatever other setup is needed. The new system is mounted at
/mnt/sysimage in this environment.
Logs are written to docker-daemon.log and docker-addon.log in /tmp/, and are copied into /var/log/anaconda/ on the installed system.
eg.:
%addon com_redhat_docker --vgname=docker --fstype=xfs
docker pull hello-world
docker pull busybox
docker images
%end
Note
The extra arguments are normally only used during installation. If they should
be used after reboot add --save-args
before the --
.
Example¶
You can add support to an existing kickstart by doing something similar to this:
part pv.2 --fstype=lvmpv --size=1 --grow
volgroup docker pv.2
logvol none --name=docker-pool --vgname=docker --size=8000 --thinpool
services --enable=docker
%packages
docker
%end
%addon com_redhat_docker --vgname=docker --fstype=xfs
docker pull hello-world
docker pull busybox
docker images
%end