Alpine Linux unter Proxmox als Docker Host

Alpine Linux ist eine kleine, einfache, aktuelle und ressourcenschonende Linux Distribution.
Sie eignet sich hervorragend für Virtuelle Maschinen, Container und als Docker Host.

  • Proxmox 6.2-12
  • Alpine Linux 3.12.0
  • Docker
  • Portainer

Alpine Linux VM erstellen

Das aktuelle Alpine VIRTUAL ISO (alpine-virt-3.12.0-x86_64.iso) herunterladen und eine neue VM erstellen.

Alpine Linux installieren

VM starten, in der Konsole als root anmelden und die Installation mit setup-alpine ausführen.

Die Fragen des wizards beantworten. In den meisten Fällen kann hier die Vorgabe übernommen werden.
Bei der Festplatte [sda] wähle ich [sys] aus. (traditional disk install)

Ist die Installation abgeschlossen, fahre ich die VM herunter.

localhost:~# poweroff

QEMU Guest Agent installieren

Bei der noch ausgeschalteten VM in den Options den QEMU Guest Agent aktivieren.

VM starten und die APK Community Repositories in der /etc/apk/repositories aktivieren.

#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.12/main
http://dl-cdn.alpinelinux.org/alpine/v3.12/community
#http://dl-cdn.alpinelinux.org/alpine/edge/main
#http://dl-cdn.alpinelinux.org/alpine/edge/community
#http://dl-cdn.alpinelinux.org/alpine/edge/testing

System updaten

docker:~# apk update && apk upgrade

QEMU Guest Agent installieren und den Service automatisch starten lassen.

docker:~# apk add qemu-guest-agent
docker:~# rc-update add qemu-guest-agent

Der Service startet aber nicht, sondern crashed!

docker:~# service qemu-guest-agent start
* Caching service dependencies ...                   [ ok ]
* Starting QEMU Guest Agent ...                      [ ok ]

docker:~# service qemu-guest-agent status
* status: crashed

Der virtuelle serielle Port für die Kommunikation mit dem Agent muss in der /etc/init.d/qemu-guest-agent geändert werden.

docker:~# ls -la /dev/vport*
crw-rw----    1 root     root      248,   1 Oct  4 13:59 /dev/vport2p1

Bei mir ist es der Port vport2p1. Könnte aber ggf. auch vport1p1 sein. Die letzte Zeile entsprechend ändern.

#!/sbin/openrc-run
name="QEMU Guest Agent"
pidfile="/run/qemu-ga.pid"
command="/usr/bin/qemu-ga"
# command_args="-m ${GA_METHOD:-virtio-serial} -p ${GA_PATH:-/dev/virtio-ports/org.qemu.guest_agent.0} -l /var/log/qemu-ga.log -d"
command_args="-m ${GA_METHOD:-virtio-serial} -p ${GA_PATH:-/dev/vport2p1} -l /var/log/qemu-ga.log -d"

Service neu starten.

docker:~# service qemu-guest-agent restart
 * Caching service dependencies ...                  [ ok ]
 * Stopping QEMU Guest Agent ...                     [ ok ]
 * start-stop-daemon: no matching processes found    [ ok ]
 * Starting QEMU Guest Agent ...                     [ ok ]

docker:~# service qemu-guest-agent status
 * status: started

Mit dem richtigen Port, läuft jetzt auch der Agent.

Benutzer anlegen

Für den SSH login erstelle ich noch einen neuen Benutzer und Gruppe.

docker:~# addgroup -g 222 gargamel
docker:~# adduser -G gargamel gargamel

Sudo installieren und den Benutzer in die sudoers Datei aufnehmen.

docker:~# apk add sudo
docker:~# visudo
# diesen Eintrag hinzufügen
gargamel ALL=(ALL) ALL

Sollte aus irgendeinem Grund ein SSH login als root notwendig sein, muss PermitRootLogin in der /etc/ssh/sshd_config erlaubt werden.

#PermitRootLogin prohibit-password
PermitRootLogin yes

Den sshd Service neu starten.

docker:~# service sshd restart

Docker installieren

Für den Einsatz als Docker Host, docker und docker-compose installieren.

docker:~# apk add docker docker-compose

docker:~# docker -v
Docker version 19.03.12, build 48a66213fe1747e8873f849862ff3fb981899fc6

docker:~# docker-compose -v
docker-compose version 1.25.4, build unknown

Docker automatisch starten lassen.

docker:~# rc-update add docker

Portainer installieren

Für die grafische Verwaltung von Docker nutze ich Portainer.

docker:~# docker volume create portainer_data
docker:~# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Läuft der Container, kann über den Port 9000 das Webinterface aufgerufen werden.

Schreibe einen Kommentar