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 den Einsatz als Docker Host.

22.03.2021 - Anleitung aktualisiert (Alpine Linux Version upgraden)
  • 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.

Alpine Linux auf die aktuelle Version upgraden

Installierte Version anzeigen.

docker:~# cat /etc/alpine-release
3.12.4

In der /etc/apk/repositories die Versionsnummer auf die aktuelle ändern. (z.B. 3.12 auf 3.13)

# http://dl-cdn.alpinelinux.org/alpine/v3.12/main
# http://dl-cdn.alpinelinux.org/alpine/v3.12/community
http://dl-cdn.alpinelinux.org/alpine/v3.13/main
http://dl-cdn.alpinelinux.org/alpine/v3.13/community

Um nicht immer die Nummern erhöhen zu müssen, kann man auch direkt auf die letzte stable release setzen.

http://dl-cdn.alpinelinux.org/alpine/latest-stable/main
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community

Den Index neu aufbauen, upgraden und neu starten.

docker:~# apk update
docker:~# apk upgrade --available
docker:~# sync
docker:~# reboot

# sync         Schreibt alle gepufferten Blöcke (Dateien) auf die Platte.
# --availabe   Erzwingt das alle Pakete aktualisiert werden, auch wenn sie die gleiche Version haben. Ist bei Änderungen in de uClibs manchmal erforderlich.

Nach dem reboot die Version kontrollieren.

docker:~# cat /etc/alpine-release
3.13.2

3 Gedanken zu „Alpine Linux unter Proxmox als Docker Host“

Schreibe einen Kommentar