Interesse an Podman?

Ich habe es etwa eine halbe Stunde lang versucht. Podman ist kommando-kompatibel, aber nicht output-kompatibel, sodass launcher verwirrt wird, wenn es versucht, die Ausgabe zu parsen. (Es ist nicht schwer, sie zu unterscheiden: docker --version antwortet mit podman version 1.0.5, also ist dies kein ernsthaftes Hindernis.)

Es gibt kein Netzwerkgerät docker0. Der Standard-overlay-Speichertreiber in Podman ist im Wesentlichen die overlay2-Implementierung und darauf aliased, aber die Ausgabe sagt nicht overlay2, und die Ausgabe des Befehls docker info ist leicht unterschiedlich. Ich habe --skip-prereqs verwendet, um die Prüfungen zu umgehen. Die freigegebenen Verzeichnisse wurden nicht automatisch erstellt; ich habe nicht untersucht, warum. Ich habe mkdir -p /var/discourse/shared/standalone/log/var-log ausgeführt, um weiterzukommen. Als Nächstes sah ich Berechtigungsprobleme, weil SELinux aktiviert, aber nicht für /var/discourse konfiguriert war.

Wenn Sie ein Verzeichnis in einen Container einbinden und ein :z oder :Z hinzufügen, etikettieren die Container-Engines den Inhalt unter den Volumes auf container_file_t.

Die Podman-Build-Dokumentation besagt:

Die Option z teilt Podman mit, dass zwei Container den Volumeninhalt teilen. Infolgedessen etikettiert Podman den Inhalt mit einem geteilten Inhaltslabel. Geteilte Volumenlabels ermöglichen es allen Containern, den Inhalt zu lesen und zu schreiben. Die Option Z weist Podman an, den Inhalt mit einem privaten, nicht geteilten Label zu versehen. Nur der aktuelle Container kann ein privates Volumen verwenden.

Ich habe mich entschieden, setenforce 0 für diese vorübergehende Installation vorübergehend zu setzen und später vielleicht darauf zurückzukommen. Ich habe die volumes so geändert, dass sie das kleingeschriebene :z verwenden:

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared:z
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log:z

Mit diesen kleinen Änderungen habe ich es geschafft, dass Discourse hochgefahren wird. Redis ist unglücklich darüber, dass transparente große Seiten im Kernel unterstützt werden, und schlägt vor, dies zu deaktivieren sowie die Einstellungen für die Speicherüberbelegung zu ändern. Wahrscheinlich sind viele andere nützliche Debug-Meldungen an mir in den Megabytes an Logausgabe vorbeigeflogen!

./launcher start app
...
--restart option is not supported.
Use systemd unit files for restarting containers

Ich habe das Skript so angepasst, dass es --restart nicht verwendet, und festgestellt, dass auch im start-Modus --skip-prereqs erforderlich ist, was mich schließlich dazu brachte, docker run auszuprobieren, woraufhin:

./launcher start app --skip-prereqs
...
+ /usr/bin/docker run ... -e DOCKER_HOST_IP= --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared:z -v /var/discourse/shared/standalone/log/var-log:/var/log:z --mac-address 02:9c:01:9b:0e:17 local_discourse/app /sbin/boot
--mac-address option not currently supported

Es funktioniert also definitiv nicht aus der Box, und ich weiß nicht, wie viel Arbeit es wäre, launcher so anzupassen, dass es entweder mit Docker oder Podman funktioniert. Die Behandlung von Voraussetzungen wäre „einfach