
I Soy un gran admirador de LXD, un administrador de contenedores del sistema Linux de próxima reproducción y predeterminado en Ubuntu. Me permite ejecutar aplicaciones de escritorio o aplicaciones de servidor en un entorno retirado. Ubuntu proporciona a LXD una seguridad sólida en mente. Sin requisa, esto podría dar circunstancia a género secundarios no deseados, como que los paquetes individuales en OpenSUSE o CentOS Linux no se actualicen. Uno de esos paquetes es el paquete del sistema de archivos. Veamos cómo solucionar el error: la transacción falló cuando intenta renovar el paquete del sistema de archivos en CentOS, OpenSUSE y otros contenedores de Linux que se ejecutan en LXD.
Detalles del tutorial | |
---|---|
Dificultad | Realizable (rss) |
Privilegios de root | No |
Requisitos | LXD en Linux |
Hora | 2m |
Error del sistema de archivos de Linux: la transacción falló al usar LXD
Analicemos el error aquí. Por ejemplo, cuando uso CentOS en LXD, veo:# dnf update
Esto es lo que vi:
Last metadata expiration check: 2:31:48 ago on Sat Mar 6 06:03:50 2021. Dependencies resolved. =============================================================================== Package Architecture Version Repository Size =============================================================================== Upgrading: filesystem x86_64 3.8-3.el8 baseos 1.1 M Transaction Summary =============================================================================== Upgrade 1 Package Total download size: 1.1 M Is this ok [y/N]: y Downloading Packages: filesystem-3.8-3.el8.x86_64.rpm 1.8 MB/s | 1.1 MB 00:00 ------------------------------------------------------------------------------- Total 932 kB/s | 1.1 MB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Running scriptlet: filesystem-3.8-3.el8.x86_64 1/1 Preparing : 1/1 Upgrading : filesystem-3.8-3.el8.x86_64 1/2 Error unpacking rpm package filesystem-3.8-3.el8.x86_64 Verifying : filesystem-3.8-3.el8.x86_64 1/2 Verifying : filesystem-3.8-2.el8.x86_64 2/2 Failed: filesystem-3.8-2.el8.x86_64 filesystem-3.8-3.el8.x86_64 Error: Transaction failed
Dos tipos de contenedores LXD
LXD nos permite configurar dos tipos diferentes de contenedores Linux:
- Contenedores privilegiados – Los contenedores inseguros y un heredero con root en dicho contenedor podrán DoS al host y encontrar formas de escapar del confinamiento. Ayudaría si los evitara a toda costa.
- Contenedores sin privilegios (predeterminado): contenedores seguros. Significa que operan internamente de un espacio de nombres de heredero, restringiendo las capacidades de los usuarios en el contenedor de Linux a las de los usuarios normales en el host con privilegios limitados en los dispositivos que posee el contenedor. La protección del host y la prevención de fugas se realiza en su totalidad a través del control de golpe obligatorio, como AppArmor o SElinux. Esta protección es la que está causando el error. Por lo tanto, podemos desactivar temporalmente la protección. Aplicar actualizaciones pendientes y activar la seguridad
proteccion.
Corregir el error LXD «Error: Transaction failed» y aplicar parches
Para enumerar todas sus instancias LXD, ejecute:$ lxc list
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | archbox | RUNNING | 10.83.200.161 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fe9d:f205 (eth0) | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | centos-6 | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | centos-7 | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | centos-8 | RUNNING | 10.83.200.129 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fe6c:f3ed (eth0) | CONTAINER | 1 | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | debian-8-jessie | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | debian-9-stretch | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | debian-test | STOPPED | | | CONTAINER | 3 | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | fedora-33 | RUNNING | 10.83.200.41 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fe8c:5088 (eth0) | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | gentoo | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | gui1604 | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | gui-1804-gimp | RUNNING | 10.83.200.28 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fea3:9da8 (eth0) | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | opensuse-15-1 | STOPPED | | | CONTAINER | 1 | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+ | oracle-7 | STOPPED | | | CONTAINER | | +------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
Para ver la ejecución del modo coetáneo:$ lxc config get centos-8 security.privileged
$ lxc config get opensuse-leap security.privileged
A continuación, establezca seguridad privilegiada a cierto por instancias:$ lxc config set centos-8 security.privileged true
$ lxc config set opensuse-leap security.privileged true
Reinicie las instancias para activar la política de seguridad:$ lxc restart centos-8
$ lxc restart opensuse-leap
Consigamos un shell raíz para nuestro contenedor CentOS 8:$ lxc exec centos-8 bash
Ejecute la aggiornamento con el comando dnf:# dnf update
# exit
Para la instancia de OpenSUSE, use el comando zypper:$ lxc exec opensuse-leap bash
# zypper up
# exit
Apágalo:$ lxc config set centos-8 security.privileged false
$ lxc config set opensuse-leap security.privileged false
Finalmente, reinicie nuevamente sus instancias para comprobar de que aparezcan posteriormente del reinicio y de que la política de seguridad vuelva a un modo sin privilegios:$ lxc restart centos-8
$ lxc restart opensuse-leap
$ lxc exec centos-8 bash
$ lxc config get centos-8 security.privileged
Resumiendo
Este problema específico no está muy acertadamente documentado. Por lo tanto, escribí esta publicación rápida para ayudar a otros. Consulte la documentación de LXD para obtener más información.