Lo intenté durante media hora más o menos. Podman es compatible a nivel de comandos, pero no a nivel de salida, por lo que launcher se confunde al intentar analizar la salida. (No es difícil distinguirlos: docker --version responde con podman version 1.0.5, así que esto no es un obstáculo grave.)
No existe el dispositivo de red docker0. El controlador de almacenamiento overlay predeterminado en Podman es básicamente la implementación overlay2 y está aliasado a él, pero la salida no dice overlay2 y la salida del comando docker info es ligeramente diferente. Usé --skip-prereqs para omitir las comprobaciones. Los directorios compartidos no se crearon automáticamente; no investigué por qué. Ejecuté mkdir -p /var/discourse/shared/standalone/log/var-log para seguir avanzando. A continuación, aparecieron problemas de permisos debido a que SELinux estaba en modo de aplicación pero no configurado para /var/discourse.
Si montas un volumen en un directorio dentro de un contenedor y agregas :z o :Z, los motores de contenedores reetiquetan el contenido bajo los volúmenes como container_file_t.
La documentación de podman build indica:
La opción z le indica a Podman que dos contenedores comparten el contenido del volumen. Como resultado, Podman etiqueta el contenido con una etiqueta de contenido compartido. Las etiquetas de volumen compartido permiten que todos los contenedores lean y escriban contenido. La opción Z le indica a Podman que etiquete el contenido con una etiqueta privada no compartida. Solo el contenedor actual puede usar un volumen privado.
Decidí ejecutar setenforce 0 temporalmente en esta instalación desechable y volver a eso más tarde, quizás. Cambié los volumes para usar la opción en minúsculas :z de esta manera:
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared:z
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log:z
Con esas pequeñas modificaciones, logré que Discourse se iniciara. Redis está molesto porque las páginas grandes transparentes están habilitadas en el kernel y sugiere desactivarlas, así como cambiar la configuración de sobrecompromiso de memoria. ¡Probablemente muchos otros mensajes de depuración útiles pasaron desapercibidos entre los megabytes de salida del registro!
./launcher start app
...
--restart option is not supported.
Use systemd unit files for restarting containers
Modifiqué el script para que no usara --restart y descubrí la necesidad de --skip-prereqs también en el modo start, lo que finalmente me llevó a intentar docker run, momento en el cual:
./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
Por lo tanto, definitivamente no funciona directamente fuera de la caja, y no sé cuánto trabajo sería necesario para ajustar launcher para que funcione con Docker o Podman. Gestionar el manejo de los requisitos previos sería “simplemente funcionar” y probablemente no sería muy difícil con una comprobación inicial de Podman, pero no sé hasta qué punto las suposiciones sobre la configuración de red se extienden en la configuración de la pila, y parece que este modo de red simplemente no es compatible con Podman.
Basado en esa preocupación, planeo no realizar el trabajo para hacer que launcher funcione bajo Podman. Solo estoy informando sobre el resultado de un experimento rápido inicial.
Dicho esto, probablemente no sea mucho trabajo para alguien que conozca mejor la pila. Todo mi trabajo de desarrollo esta primavera lo realicé en una instalación manual de desarrollo en Fedora 29 con ajustes triviales como usar dnf en lugar de apt-get y algunas traducciones menores de nombres de paquetes, sin usar Docker ni Podman en absoluto. Espero que alguien que conozca bien Podman, así como la administración normal de toda la pila tecnológica de Discourse, probablemente considere que es una cantidad moderada de trabajo relativamente fácil. Si supiera exactamente todo el trabajo que implica, tendría una mejor idea de si sería el tipo de trabajo que probablemente “se pudra” y requiera mantenimiento continuo o no. Pero… no lo sé. 