Veröffentlicht am: 29.08.2014
Von: JLusiardi
In Kategorie: Software
Nachdem Docker immer mehr gehyped wird (LinuxMagazin 09/14, c't 17/2014), soll das ganze hier mal für einen Root-Server inklusive folgender Dienste getestet:
- Wordpress (inklusive MySQL Datenbank)
- OpenVPN Server
- getrennter SSH Server für IRC mit irssi in screen oder tmux
Zusätzlich soll als Option das schnelle und einfache Bereitstellen von weiteren Diensten auf Basis von Technologien wie Node.js und NoSQL Datenbanken möglich sein.
Installation von Docker auf dem Root-Servers
Zunächst muss Docker installiert werden. Das soll nun hier besprochen werden.
Basisinstallation
Der Hoster bietet hier Debian-76-wheezy-64-minimal an.
Nach der Installation muss die Liste der Paket-Quellen angepasst werden (Debian Testing wird benötigt). Dabei hilft der Debian Sources List Generator:
deb http://ftp.debian.org/debian testing main contrib
deb-src http://ftp.debian.org/debian testing main contrib
deb http://ftp.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.debian.org/debian/ jessie-updates main contrib
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
Anschließend mit apt-get update und apt-get dist-upgrade auf die Debian-Version jessie (bzw. testing) updaten.
Nun für den richtigen Kernel sorgen:
echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >
/etc/apt/sources.list.d/wheezy-backports.list apt-get update apt-get -t wheezy-backports install linux-image-amd64
Docker installieren
Für Docker gibt es ein Ubuntu Repository, welches auch für Debian verwendet werden kann:
apt-key adv --keyserver keyserver.ubuntu.com
--recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo "deb http://get.docker.io/ubuntu docker main" >
/etc/apt/sources.list.d/docker.list
apt-get update
apt-get install lxc-docker
Die beiden letzen Schritte nach dieser Anleitung: http://doduck.com/docker-install-on-debian-7/
IPv6 für die Container
IPv6 ermöglicht es, für jeden Container eine eigene IP zu reservieren.
Leider wird IPv6 von Docker zum aktuellen Stand (23. August 2014, Docker Version 1.2.0) noch nicht unterstützt, kann aber über lxc direkt an den Container durchgereicht werden. Wenn IPv6 nicht verwendet werden soll, so kann dieser Abschnitt übersprungen werden.
Für IPv6 muss in der Datei /etc/sysctl.conf folgende Zeile eingefügt oder wieder eingkommentiert werden:
net.ipv6.conf.all.forwarding=1
Und der Docker-Daemon muss auf den lxc Treiber umgestellt werden. Dazu unter Debian in der Datei /etc/default/docker folgendes eintragen:
DOCKER_OPTS="--exec-driver=lxc"
Zusätzlich muss das lxc Paket installiert werden:
apt-get install lxc
Nun muss der von Docker angelegten Bridge noch eine IPv6 IP hinzufügen:
ip -6 addr add aaaa:bbbb:cccc:dddd::1:1/112 dev docker0
Dabei muss natürlich aaaa:bbbb:cccc:dddd durch einen entsprechenden Teil des eigenen IPv6 Subnetzes ersetzt werden.
Um das Ganze zu Vereinfachen, bietet es sich an, Container dann mit folgendem Script zu starten:
NW_IP=$1
shift
NW_GW=aaaa:bbbb:cccc:dddd::1:1
#shift
REST=$@
docker run \
--lxc-conf="lxc.network.flags=up" \
--lxc-conf="lxc.network.ipv6=$NW_IP" \
--lxc-conf="lxc.network.ipv6.gateway=$NW_GW" \
$REST
Beim Aufrufen muss die IPv6 Adresse inklusive Subnetzmaske angegeben werden, also aaaa:bbbb:cccc:dddd::1:2/112.
Résumé
Nun ist es möglich mit Docker Container zu verwenden und sogar IPv6 direkt in die Container zu leiten.