Nuevas funciones para ejecutar contenedores sobre NFS con Podman sin root

En noviembre escribimos, que explicaba por qué no puede usar la configuración predeterminada de Podman cuando se ejecuta con un directorio de inicio NFS. Desde entonces, simplificamos las cosas con las nuevas versiones de Podman y descubrimos algunos problemas con los usuarios que configuran estos entornos.

Actualmente, Podman sin raíz (de forma predeterminada) almacena el contenido de su imagen de contenedor en el directorio de inicio del usuario. El blog vinculado anteriormente explica que Podman no puede usar múltiples UID en el lado del servidor NFS porque el servidor NFS no comprende el espacio del nombre de usuario. El blog recomienda al usuario configurar un directorio diferente para almacenar el contenido. Los usuarios deben cambiar el Almacenamiento.conf archivo para que esto suceda.

Acerca de rootless_storage_path

Agregamos un nuevo campo de opción para Almacenamiento.conf fijado rootless_storage_path para facilitar el uso de Podman sin root en un directorio de inicio NFS para diferentes usuarios.

$ man Contenedores-Almacenamiento.conf

       rootless_storage_path="$HOME/.local/share/Contenedores/Almacenamiento"

       Almacenamiento path for rootless users. By default, the graphroot for rootless users is set to $XDG_DATA_HOME/Contenedores/Almacenamiento, if XDG_DATA_HOME is set. Otherwise, $HOME/.local/share/Contenedores/Almacenamiento is used. This field can be used if administrators need to change the Almacenamiento location for all users.

              The rootless Almacenamiento path supports three substations:
              * `$HOME` => Replaced by the users home directory.
              * `$UID`  => Replaced by the users UID
              * `$USER` => Replaced by the users name

Un caso de uso común para este campo es proporcionar un directorio de almacenamiento local cuando los directorios principales de los usuarios se montan en NFS (podman no admite el almacenamiento de contenedores en NFS).

Esta función permite que un administrador configure una máquina con directorios principales de NFS que apunten el contenido del contenedor del usuario a un directorio separado.

Por ejemplo, vea la siguiente configuración:

rootless_storage_path="$/var/lib/user/$USER/Contenedores/Almacenamiento"

Si el usuario Salida estaban ejecutando Podman como un usuario normal, Podman intentaría crear los directorios /var/lib/user/sally/Contenedores/Almacenamientoy almacenar imágenes de contenedor en este directorio. También usaría estos directorios para todos los demás contenedores. sí rafael conectado a la misma máquina y ejecutando Podman, su almacenamiento sería /var/lib/user/ralph/Contenedores/Almacenamiento. Obviamente, estos directorios deben existir previamente y ser escribibles por el usuario respectivo. El administrador puede configurar directorios principales, /var/lib/users, para que todos puedan escribir, y el comando Podman crearía la ruta completa.

Ahora, eso me lleva al segundo punto de este blog.

Uso de directorios tmp para almacenamiento de contenedores

Los administradores pueden verse tentados a utilizar /tmp Donde /var/tmp como directorios de almacenamiento de contenedores. Bueno, algunos de nuestros usuarios han informado problemas al usar estos directorios. Los usuarios informaron que archivos/directorios aleatorios desaparecieron de sus imágenes y contenedores. Diagnosticamos el problema y entendimos que systemd estaba limpiando el archivo tmp. Systemd desencadena periódicamente una tarea para limpiar el contenido antiguo que queda en los directorios temporales. Esta tarea borró archivos y directorios antiguos almacenados en el contenedor de almacenamiento. el systemd-tmpfiles no sabe acerca de estos directorios de Podman, solo está haciendo su trabajo.

Conclusión

En última instancia, si un administrador desea almacenar su contenido en /var/tmp Donde /tmp, deben cambiar el systemd-tmpfiles para ignorar los directorios de contenido del contenedor. Finalmente, en RHEL, CentOS y Fedora, así como en muchas otras distribuciones, el /tmp está en un tmpfs, que de forma predeterminada solo puede almacenar hasta el 50% del tamaño de la memoria y se destruirá al reiniciar.

Artículos de interés

Subir