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
Super Anleitung!
Vielen Dank.
Danke! :)
Danke, genau die Einstellungen die ich gesucht habe.