Compartir comentarios
Las respuestas se generan en base a la documentación.

Notas de la versión de Docker Engine 23.0

Note

A partir de la versión 23.0.0 de Docker Engine, Buildx se distribuye en un paquete independiente: docker-buildx-plugin. In versiones anteriores, Buildx estaba incluido en el paquete docker-ce-cli. Al actualizar a esta versión de Docker Engine, asegúrate de actualizar todos los paquetes. Por ejemplo, en Ubuntu:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Consulta las instrucciones de instalación de Docker Engine para tu sistema operativo para obtener más detalles sobre la actualización de Docker Engine.

Esta página describe los cambios más recientes, adiciones, problemas conocidos y correcciones para Docker Engine versión 23.0.

Para obtener más información sobre:

A partir de la versión 23.0.0, Docker Engine deja de utilizar la versión basada en CalVer y comienza a utilizar el formato de versión SemVer. Cambiar el formato de la versión es un paso previo hacia la compatibilidad con módulos de Go, pero el repositorio aún no utiliza módulos de Go y sigue requiriendo el uso de una versión "+incompatible". Se sigue trabajando hacia la compatibilidad con módulos de Go en una futura versión.

23.0.6

2023-05-08

Para obtener una lista completa de las solicitudes de extracción (pull requests) y los cambios en esta versión, consulta los hitos (milestones) correspondientes en GitHub:

Correcciones de errores y mejoras

  • Corregir que el controlador de almacenamiento vfs no funcione sobre NFS. moby/moby#45465

Actualizaciones de empaquetado

23.0.5

2023-04-26

Para obtener una lista completa de las solicitudes de extracción (pull requests) y los cambios en esta versión, consulta los hitos correspondientes en GitHub:

Correcciones de errores y mejoras

  • Añadir la opción --all / -a al depurar (pruning) volúmenes. docker/cli#4229
  • Añadir --format=json para docker info. docker/cli#4320
  • Corregir la pérdida de logs con el controlador de logs AWSLogs. moby/moby#45350
  • Corregir una regresión introducida en la v23.0.4 donde dockerd se negaba a iniciarse si se proporcionaba el parámetro de configuración fixed-cidr pero no bip. moby/moby#45403
  • Corregir un pánico (panic) en libnetwork durante el inicio del daemon moby/moby#45376
  • Corregir que no se envíe el evento "tag" cuando se construye una imagen con buildx. moby/moby#45410

Actualizaciones de empaquetado

23.0.4

2023-04-17

Para obtener una lista completa de las solicitudes de extracción y los cambios en esta versión, consulta los hitos correspondientes en GitHub:

Correcciones de errores y mejoras

  • Corregir una regresión de rendimiento en la CLI de Docker 23.0.0 docker/cli#4141.
  • Corregir que el indicador de progreso en docker cp no funcione de la manera esperada docker/cli#4157.
  • Corregir el completado de la terminal para docker compose --file docker/cli#4177.
  • Corregir un error causado por el manejo incorrecto de "default-address-pools" en daemon.json moby/moby#45246.

Actualizaciones de empaquetado

23.0.3

2023-04-04
Note

Debido a un problema con los repositorios de paquetes de CentOS 9 Stream, los paquetes para CentOS 9 no están disponibles actualmente. Los paquetes para CentOS 9 se pueden añadir más tarde o como parte de la próxima versión de parche (23.0.4).

Correcciones de errores y mejoras

  • Se corrigieron varios problemas que podían provocar que las redes overlay cifradas de Swarm no mantuvieran sus garantías, mitigando CVE-2023-28841, CVE-2023-28840 y CVE-2023-28842.
    • La falta de soporte del kernel para redes overlay cifradas ahora se reporta como un error.
    • Las redes overlay cifradas se configuran de manera temprana, en lugar de esperar a que se adjunten múltiples nodos.
    • Las redes overlay cifradas ahora son utilizables en Red Hat Enterprise Linux 9 mediante el uso del módulo del kernel xt_bpf.
    • Los usuarios de las redes overlay de Swarm deben revisar GHSA-vwm3-crmr-xfxw para asegurarse de que no se haya producido una exposición no intencionada.

Actualizaciones de empaquetado

23.0.2

2023-03-28

Para obtener una lista completa de las solicitudes de extracción y los cambios en esta versión, consulta los hitos correspondientes en GitHub:

Correcciones de errores y mejoras

  • Resolver por completo las comprobaciones faltantes para apparmor_parser cuando se detecta un kernel compatible con AppArmor. containerd/containerd#8087, moby/moby#45043
  • Asegurar que las credenciales se eliminen de las URLs de Git al generar buildinfo de BuildKit. Corrige CVE-2023-26054. moby/moby#45110
  • Corregir que los volúmenes anónimos creados por una línea VOLUME en un Dockerfile se excluyan del prune de volúmenes. moby/moby#45159
  • Corregir un fallo al propagar correctamente los errores durante la eliminación de volúmenes en un nodo de Swarm. moby/moby#45155
  • Solución temporal para un error en COPY --link de BuildKit deshabilitando la optimización mergeop/diffop. moby/moby#45112
  • Limpiar adecuadamente las tareas secundarias cuando se elimina un trabajo principal de Swarm. moby/swarmkit#3112, moby/moby#45107
  • Corregir la lógica de creación de servicios de Swarm para que se puedan utilizar juntos un GenericResource y una red no predeterminada. moby/swarmkit#3082, moby/moby#45107
  • Corregir que el soporte de Swarm CSI requiera que el plugin CSI ofrezca endpoints de staging para publicar un volumen. moby/swarmkit#3116, moby/moby#45107
  • Corregir un pánico causado por el almacenamiento en búfer de logs en algunas configuraciones. containerd/fifo#47, moby/moby#45051
  • Registrar los errores en la capa de traducción de la API REST a gRPC de Swarm en el nivel debug para reducir la redundancia y el ruido. moby/moby#45016
  • Corregir un problema de resolución de DNS que afectaba a los contenedores creados con --dns-opt o --dns-search cuando se utiliza systemd-resolved fuera del contenedor. moby/moby#45000
  • Corregir un pánico al registrar errores en el manejo de consultas DNS originadas desde el interior de un contenedor. moby/moby#44980
  • Mejorar la velocidad de docker ps permitiendo a los usuarios excluirse de los cálculos de tamaño con --size=false. docker/cli#4107
  • Extender el soporte para el completado de bash a todos los plugins. docker/cli#4092
  • Corregir que docker stack deploy falle en Windows cuando están presentes variables de entorno especiales establecidas por cmd.exe. docker/cli#4083
  • Añadir compatibilidad hacia adelante para futuras versiones de la API considerando que las etiquetas de imagen vacías son iguales a <none>. docker/cli#4065
  • Escribir atómicamente archivos de contexto para reducir en gran medida la probabilidad de corrupción y mejorar el mensaje de error para un contexto corrupto. docker/cli#4063

Empaquetado

23.0.1

2023-02-09

Para obtener una lista completa de las solicitudes de extracción y los cambios en esta versión, consulta los hitos correspondientes en GitHub:

Correcciones de errores y mejoras

  • Corregir que los contenedores no se inicien si el kernel tiene habilitado AppArmor, pero apparmor_parser no está disponible. moby/moby#44942
  • Corregir que las construcciones habilitadas con BuildKit con almacenamiento en caché en línea provoquen la caída del daemon. moby/moby#44944
  • Corregir que BuildKit cargue incorrectamente capas en caché creadas por versiones anteriores. moby/moby#44959
  • Corregir un problema por el cual las redes ipvlan creadas antes de la actualización impedían el inicio del daemon. moby/moby#44937
  • Corregir que el controlador de almacenamiento overlay2 falle tempranamente en las pruebas de metacopy cuando se inicializa en un sistema de archivos subyacente no compatible. moby/moby#44922
  • Corregir que los eventos de salida de exec se malinterpreten como salidas de contenedores en algunos entornos de ejecución, como Kata Containers. moby/moby#44892
  • Mejorar el mensaje de error devuelto por la CLI al recibir una respuesta JSON truncada causada por la interrupción de la API a mitad de la solicitud. docker/cli#4004
  • Corregir un código de salida de CLI incorrecto al intentar ejecutar un directorio con un runc compilado usando Go 1.20. docker/cli#4004
  • Corregir el error al tratar el argumento de tamaño de --device-write-bps como una ruta. docker/cli#4004

Empaquetado

23.0.0

2023-02-01

Para obtener una lista completa de las solicitudes de extracción y los cambios en esta versión, consulta los hitos correspondientes en GitHub:

Nuevas características

  • Configurar Buildx y BuildKit como el constructor predeterminado en Linux. moby/moby#43992
    • Alias docker build a docker buildx build. docker/cli#3314
    • El constructor heredado aún se puede utilizar configurando explícitamente DOCKER_BUILDKIT=0.
    • Existen diferencias en cómo BuildKit y el constructor heredado manejan las construcciones multi-etapa. Para obtener más información, consulta Construcciones multi-etapa.
  • Añadir soporte para descargar capas comprimidas con zstd. moby/moby#41759, moby/moby#42862
  • Añadir soporte para entornos de ejecución (runtimes) OCI alternativos en Linux, compatibles con la API v2 del runtime de containerd. moby/moby#43887, moby/moby#43993
  • Añadir soporte para containerd runhcs shim en Windows (desactivado por defecto). moby/moby#42089
  • Añadir dockerd --validate para comprobar la configuración JSON del daemon y salir. moby/moby#42393
  • Añadir la capacidad de configurar el proxy HTTP del daemon mediante banderas o configuración JSON. moby/moby#42835
  • Añadir soporte para redes punto a punto RFC 3021 (IPv4 /31s) y hosts individuales (IPv4 /32s). Para redes con dos o menos direcciones, IPAM no reservará una dirección de red y de difusión (broadcast). moby/moby#42626
  • Añadir soporte para configurar ipvlan_flag y usar el modo ipvlan_mode l3s en el controlador de red ipvlan. moby/moby#42542
  • Añadir soporte para mostrar el valor de la opción metacopy para el controlador de almacenamiento overlay2. moby/moby#43557
  • Añadir soporte para describir dispositivos de Windows usando la sintaxis IDType://ID. moby/moby#43368
  • Añadir informes de versiones de RootlessKit, slirp4netns y VPNKit. moby/moby#42330
  • Añadir soporte experimental para volúmenes de clúster SwarmKit (CSI). moby/moby#41982
    • CLI: Añadir opciones de volumen de clúster (CSI) a docker volume. docker/cli#3606
    • CLI: Añadir soporte de volumen de clúster (CSI) a docker stack. docker/cli#3662
  • Añadir soporte para trabajos SwarmKit en docker stack deploy. docker/cli#2907
  • Añadir el comando docker stack config para generar los archivos de configuración combinados e interpolados utilizados por stack deploy. docker/cli#3544
  • Añadir un nuevo comando docker context show que imprime el nombre del contexto actual. docker/cli#3567
  • Añadir la variante abreviada --format=json de --format="{{ json . }}" a todos los comandos que admiten la bandera --format. docker/cli#2936
  • Añadir una opción --quiet a los comandos docker create y docker run para suprimir la salida al descargar una imagen. docker/cli#3377
  • Añadir una opción --force al subcomando docker network rm. Hace que la CLI devuelva un código de salida 0 incluso si la red no existe. No tiene efecto en el procedimiento del lado del servidor para eliminar una red. docker/cli#3547
  • Añadir una opción --signal a docker stop y docker restart. docker/cli#3614
  • Añadir una bandera -v/--version a docker-proxy. moby/moby#44703
  • Los plugins ahora se descubren en rutas de nivel de usuario bien conocidas cuando el daemon se ejecuta en modo rootless. moby/moby#44778
  • El daemon ahora maneja las codificaciones JSON alternativas comunes en el archivo de configuración JSON de forma limpia y reporta errores útiles. moby/moby#44777, moby/moby#44832
    • Se acepta UTF-8 con una marca de orden de bytes (BOM).
    • Se acepta UTF-16 con una marca de orden de bytes (BOM).
    • El UTF-8 no válido se reporta de forma temprana y con un mensaje de error comprensible.
  • Permitir el uso de STOPSIGNAL a través de docker commit. moby/moby#43369
  • Añadir una nueva opción al controlador de logs awslogs para permitir omitir la creación del flujo de logs en CloudWatch. moby/moby#42132
  • Añadir una nueva opción al controlador de logs awslogs para especificar el formato de log que se envía a CloudWatch. moby/moby#42838
  • Añadir una nueva opción al controlador de logs fluentd para establecer el intervalo de reconexión. moby/moby#43100
  • Añadir nuevos configuradores de opciones al cliente de la API de Go: WithTLSClientConfigFromEnv(), WithHostFromEnv() y WithVersionFromEnv(). moby/moby#42224
  • Añadir generación de completado de comandos de la terminal a través de un subcomando docker completion. docker/cli#3429
  • API: Añadir una cabecera Swarm a GET /_ping y HEAD /_ping, lo que permite la detección en una sola solicitud del soporte de Swarm. moby/moby#42064
  • API: Añadir un parámetro signal a POST /containers/{id}/stop y POST /containers/{id}/restart para establecer la señal utilizada. moby/moby#43206
  • API: Añadir un parámetro CreateMountPoint a POST /containers/create. moby/moby#43484
  • API: Añadir un parámetro shared-size a GET /images/json para habilitar el cálculo del tamaño compartido de las imágenes. moby/moby#42531
  • API: Añadir un parámetro type a GET /system/df, para controlar qué tipos de objetos se consideran al calcular el uso del disco. moby/moby#42559
  • systemd: Utilizar un containerd gestionado por systemd en lugar de un containerd gestionado por el daemon. moby/moby#42373
  • systemd: Iniciar docker.service después de time-set.target. moby/moby#43107

Eliminado

Depreciado

  • Requerir Windows Server RS5 / LTSC 2019 (compilación 17763) como mínimo para ejecutar el daemon. moby/moby#43254
  • Depreciar BuilderSize en la versión de la API >= 1.42. moby/moby#42608
  • Depreciar BuildCache.Parent en favor del recién introducido BuildCache.Parents en la versión de la API >= 1.42. moby/moby#43908
  • Depreciar pkg/urlutil, trasladando la implementación a builder/remotecontext/urlutil. moby/moby#43477

Actualizaciones (Upgrades)

Seguridad

  • Cambiar los permisos de los archivos hostconfig.json de los contenedores a 0600 (antes 0644). moby/moby#41620
  • Corregir que --seccomp-profile no acepte unconfined y renombrar el perfil seccomp predeterminado a builtin. moby/moby#42481
  • Construir siempre con soporte de seccomp, y eliminar la etiqueta de construcción seccomp. moby/moby#42501
  • Añadir soporte de seccomp en riscv64. moby/moby#43553
  • Añadir soporte para establecer banderas pasadas a seccomp(2) en perfiles seccomp. moby/moby#42648
  • Refactorizar tipos seccomp para reutilizar runtime-spec, y añadir soporte para ErrnoRet. moby/moby#42005
  • Añadir soporte para DefaultErrnoRet en perfiles seccomp. moby/moby#42604
  • Añadir un campo DefaultErrnoRet explícito al perfil seccomp predeterminado, sin cambios de comportamiento. moby/moby#42649
  • Bloquear socket con AF_VSOCK en el perfil seccomp predeterminado. moby/moby#44563
  • Volver a habilitar process_vm_readv y process_vm_writev en el perfil seccomp predeterminado. moby/moby#42083
  • Añadir llamadas al sistema relacionadas con PKU al perfil seccomp predeterminado. moby/moby#43812
  • Permitir clock_settime64 con CAP_SYS_TIME. moby/moby#43775
  • Permitir bpf con CAP_BPF y perf_event_open con CAP_PERFMON. moby/moby#43988
  • Establecer explícitamente la llamada al sistema clone3 para devolver ENOSYS en el perfil seccomp predeterminado, con el fin de garantizar que glibc recurra correctamente a usar clone. moby/moby#42681

Correcciones de errores y mejoras

  • Promover overlay2 para que sea el controlador de almacenamiento predeterminado (btrfs y zfs ahora requieren activación explícita). moby/moby#42661
  • Añadir un indicador de carga (loading spinner) al comando docker cp. docker/cli#2708
  • Depreciar la función ElectAuthServer, y hacer que devuelva el registro predeterminado sin llamar al endpoint de la API GET /info. docker/cli#2819
  • Las barras de progreso ya no se invierten al revertir (rolling back) los servicios de Swarm. docker/cli#2940
  • Usar net.JoinHostPort() para corregir el formato con direcciones IPv6. docker/cli#2972
  • Los mensajes de error de la CLI ahora se imprimen en stderr. docker/cli#3044
  • Mejorar el rendimiento de docker info si se utiliza un --format personalizado que solo usa información local. Con este cambio, la CLI solo utiliza la API del daemon si detecta que se necesita información del daemon. docker/cli#3179
  • Eliminar el valor predeterminado de la bandera --stop-signal, ya que puede no reflejar el valor predeterminado real utilizado por el daemon. docker/cli#3245
  • Añadir el esquema 3.10 de Compose a docker stack; permitir omitir el campo version (lo que resulta en latest). docker/cli#3257
  • La versión de Compose 3 es ahora equivalente a 3.x (la última) en docker stack. docker/cli#3445
  • Corregir que <Ctrl-c> se quede colgado en Windows para salir después de ejecutar un contenedor en modo no interactivo. docker/cli#3302
  • Añadir rutas de origen relativas al comando run en las banderas -v/--volume y -m/--mount. docker/cli#3469
  • docker exec -t ahora establece el tamaño de la consola para el proceso ejecutado inmediatamente cuando se crea. docker/cli#3627
  • Actualizar el formato de impresión agradable (pretty-print) de docker info para proporcionar más detalles sobre los plugins instalados. docker/cli#3645
  • Imprimir mensajes de advertencia para los comandos docker context list y docker context use cuando el contexto es anulado por el entorno. docker/cli#3668
  • Añadir una anotación de aliases personalizada que se puede usar para imprimir todos los alias disponibles para un comando. docker/cli#3694
  • La CLI ya no crea ni actualiza el archivo de configuración de la CLI al ejecutar docker context use y seleccionar el contexto actual. docker/cli#3721
  • Los contextos inexistentes ahora se ignoran al ejecutar docker context rm --force. docker/cli#3791
  • Añadir la capacidad de anular enteros a 0 en archivos de Compose. docker/cli#3812
  • SIGINT (<Ctrl-c>) ahora se transmite a los contenedores en ejecución en lugar de provocar la salida de la CLI. docker/cli#3849
  • Mejorar la experiencia de usuario de docker port CONTAINER ordenando los puertos antes de imprimirlos. docker/cli#3892
  • API: GET /containers/{id}/logs y POST /containers/{id}/attach ahora reportan qué formato de flujo sin procesar (raw-stream) está en uso utilizando la cabecera de respuesta Content-type en la versión de la API >= 1.42. moby/moby#39812
  • Establecer el tamaño de sandbox predeterminado para las capas de Windows en 127GB, y asegurar que la bandera --storage-opts se aplique a todo el almacenamiento en Windows. moby/moby#41636
  • Eliminar la sección de plugins del archivo de configuración de containerd (/var/run/docker/containerd/containerd.toml). moby/moby#41675
  • Rechazar manifiestos null durante la importación de archivos tar. moby/moby#41842
  • Añadir configuración shim para runtimes personalizados para plugins. moby/moby#41854
  • Las comprobaciones de estado de los contenedores ahora se reanudan cuando se reinicia el daemon. moby/moby#41935
  • La cuota ya no se deshabilita al limpiar el controlador btrfs. moby/moby#42273
  • Los dispositivos del host que son accesibles ahora se pueden montar en contenedores sin privilegios (rootless) con --privileged. moby/moby#42638
  • Corregir el manejo incorrecto de los patrones de directorios con comodines recursivos **/foo en .dockerignore. moby/moby#42676
  • Extender docker import --platform para permitir marcar una imagen importada como de arquitectura extranjera. moby/moby#43103
  • La validación de las opciones de tiempo real de la CPU ahora se realiza cuando se inicia el daemon en lugar de realizar validaciones para cada contenedor individual, lo que permite que el inicio falle tempranamente. moby/moby#43131
  • Congelar el paquete namesgenerator contra nuevas adiciones. Los usuarios tendrán que estar satisfechos con las 25359 combinaciones existentes de adjetivos y nombres. moby/moby#43210
  • API: containers/{id}/attach/ws solo a flujos de acuerdo con los parámetros stdin, stdout y stderr en la versión de la API >= 1.42. moby/moby#43322
  • Corregir que el tráfico UDP en los contenedores no funcione después de que el contenedor se reinicie bajo un tráfico sostenido. moby/moby#43409
  • Añadir soporte para descargar imágenes con niveles de características de microarquitectura amd64 personalizados, tal como lo admiten las últimas versiones de Go, GCC, LLVM y otras herramientas de compilación. moby/moby#43434
  • Mejorar la validación de solicitudes JSON no válidas en la API. moby/moby#43463
  • Mitigar el impacto de los inicios lentos de exec en las comprobaciones de estado. El tiempo de espera de la comprobación ahora solo se aplica a la duración en que se está ejecutando el comando de comprobación de estado. El tiempo que tarda en iniciarse el comando ya no cuenta para el tiempo de espera. moby/moby#43480
  • El tamaño de la consola tty se establece inmediatamente tras su creación. moby/moby#43593, moby/moby#43622
  • Corregir que los montajes overlay2 no se limpien después de inicios fallidos del contenedor o del apagado del daemon. moby/moby#43659
  • Coincidir la resolución de la lista de manifiestos con containerd. moby/moby#43675
  • Omitir el uso de firewalld para las redes cuando el daemon se está ejecutando en modo rootless. moby/moby#43813
  • Las redes NAT personalizadas ahora se vuelven a crear después de reiniciar el daemon si faltan en Windows. moby/moby#43858
  • Corregir la terminación del proceso de comprobación de estado del contenedor cuando se agota su tiempo de espera. moby/moby#43994
  • Corregir live-restore con políticas de reinicio y referencias de volúmenes. moby/moby#44237
  • API: Ahora solo los volúmenes anónimos se depuran (pruned) por defecto en la versión de la API >= v1.42. Pasa el filtro all=true para depurar los volúmenes con nombre además de los anónimos. moby/moby#44259
  • API: Admitir llamadas concurrentes en el endpoint GET /system/df. moby/moby#42715
  • Mejorar la confiabilidad de que el daemon vuelque la pila y salga con el código 2 cuando se le envía un SIGQUIT. moby/moby#44831
  • Mejorar la confiabilidad de docker logs -f en Windows, y evitar que se omitan saltos de línea en el controlador de logs local. moby/moby#43294
  • Corregir un raro bloqueo mutuo (deadlock) en el daemon causado por el almacenamiento en búfer de los logs del contenedor. moby/moby#44856
  • Mejorar el manejo de errores en diversas operaciones del sistema de archivos para que el daemon pueda iniciarse en un sistema de archivos subyacente overlayfs. moby/moby#44834
  • Corregir un problema por el cual --ipc=host no se manejaba correctamente cuando el daemon se ejecutaba en modo rootless. moby/moby#44863
  • Corregir un conjunto de problemas de larga data donde las entradas de conntrack obsoletas causaban un enrutamiento incorrecto del tráfico UDP para los contenedores. moby/moby#44752
  • Corregir que los contenedores semi-registrados se listen en la API, así como una desreferencia de puntero nulo y pánico causados por el uso de un contenedor parcialmente registrado en las llamadas a la API. moby/moby#44633
  • Corregir un fallo al crear la cadena de ip6tables DOCKER-USER. moby/moby#44845
  • Corregir un fallo al limpiar las reglas de iptables cuando el comando ip6tables no está disponible. moby/moby#44727
  • Corregir un problema por el cual algunas reglas NAT de iptables no se limpiaban después de habilitar el proxy userland. moby/moby#44811
  • Corregir un proceso potencialmente filtrado en situaciones raras donde la limpieza de un intento fallido de iniciar un contenedor se manejó de manera incorrecta. moby/moby#44400
  • Corregir que la hora CreatedAt de un volumen refleje la inicialización y no la creación. moby/moby#44725
  • Corregir un problema por el cual la CLI informaba incorrectamente un servidor incompatible en lugar de un servidor inalcanzable en algunos comandos. docker/cli#3901, docker/cli#3904
  • Corregir el completado roto de volúmenes en Zsh. docker/cli#2998
  • Mejorar la salida de docker context cuando hay un contexto no válido presente. docker/cli#3847
  • Eliminar la decoración ANSI de las anotaciones de ayuda de la CLI cuando la salida no es una TTY, y se añadió una nueva línea para legibilidad. docker/cli#3973
  • Añadir docker container remove como un alias para docker container rm. docker/cli#3986

Problemas conocidos

apparmor_parser (hilo de seguimiento)

Algunos usuarios de Debian han reportado problemas con contenedores que no se inician después de actualizar a la rama 23.0. El mensaje de error indica que el problema se debe a la falta del binario apparmor_parser:

Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded: running `apparmor_parser apparmor_parser --version` failed with output:
error: exec: "apparmor_parser": executable file not found in $PATH
Error: failed to start containers: somecontainer

La solución alternativa a este problema es instalar el paquete apparmor manualmente:

apt-get install apparmor

Caché en línea de BuildKit (hilo de seguimiento)

Intentar construir una imagen con la característica de caché en línea de BuildKit (por ejemplo, docker build --build-arg BUILDKIT_INLINE_CACHE=1 ., docker buildx build --cache-to type=inline .) provocará que el daemon salga inesperadamente:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x147ff00]

goroutine 693 [running]:
github.com/docker/docker/vendor/github.com/moby/buildkit/cache.computeBlobChain.func4.1({0x245cca8, 0x4001394960})
        /go/src/github.com/docker/docker/vendor/github.com/moby/buildkit/cache/blobs.go:206 +0xc90
github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol.(*call).run(0x40013c2240)
        /go/src/github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol/flightcontrol.go:121 +0x64
sync.(*Once).doSlow(0x0?, 0x4001328240?)
        /usr/local/go/src/sync/once.go:74 +0x100
sync.(*Once).Do(0x4001328240?, 0x0?)
        /usr/local/go/src/sync/once.go:65 +0x24
created by github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol.(*call).wait

El daemon se reiniciará si está configurado para hacerlo (por ejemplo, a través de systemd) después de dicha caída. La única mitigación disponible en esta versión es evitar realizar construcciones con la característica de caché en línea habilitada.

BuildKit con caché caliente (hilo de seguimiento)

Si se construyó una imagen con BuildKit en una versión anterior del daemon, y se construye con un daemon 23.0, las capas previamente almacenadas en caché no se restaurarán correctamente. La imagen puede parecer construirse correctamente si no se cambia ninguna línea en el Dockerfile; sin embargo, si se produce una invalidación parcial de la caché debido al cambio de algunas líneas en el Dockerfile, las capas aún válidas y previamente almacenadas en caché no se cargarán correctamente.

Esto se presenta con mayor frecuencia como archivos que deberían estar presentes en la imagen pero que no están presentes en una etapa RUN u otra etapa que haga referencia a archivos, después de cambiar algunas líneas en el Dockerfile:

[+] Building 0.4s (6/6) FINISHED
 => [internal] load build definition from Dockerfile
 => => transferring dockerfile: 102B
 => [internal] load .dockerignore
 => => transferring context: 2B
 => [internal] load metadata for docker.io/library/node:18-alpine
 => [base 1/2] FROM docker.io/library/node:18-alpine@sha256:bc329c7332cffc30c2d4801e38df03cbfa8dcbae2a7a52a449db104794f168a3
 => CACHED [base 2/2] WORKDIR /app
 => ERROR [stage-1 1/1] RUN uname -a
------
 > [stage-1 1/1] RUN uname -a:
#0 0.138 runc run failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory
------
Dockerfile:5
--------------------
   3 |
   4 |     FROM base
   5 | >>> RUN uname -a
   6 |
--------------------
ERROR: failed to solve: process "/bin/sh -c uname -a" did not complete successfully: exit code: 1

Para mitigar esto, se debe descartar la caché de construcción anterior. docker builder prune -a vaciará por completo la caché de construcción y permitirá que las construcciones afectadas continúen eliminando las capas de caché mal manejadas.

redes ipvlan (hilo de seguimiento)

Al actualizar a la rama 23.0, la existencia de cualquier red ipvlan impedirá que el daemon se inicie:

panic: interface conversion: interface {} is nil, not string

goroutine 1 [running]:
github.com/docker/docker/libnetwork/drivers/ipvlan.(*configuration).UnmarshalJSON(0x40011533b0, {0x400069c2d0, 0xef, 0xef})
        /go/src/github.com/docker/docker/libnetwork/drivers/ipvlan/ipvlan_store.go:196 +0x414
encoding/json.(*decodeState).object(0x4001153440, {0x5597157640?, 0x40011533b0?, 0x559524115c?})
        /usr/local/go/src/encoding/json/decode.go:613 +0x650
encoding/json.(*decodeState).value(0x4001153440, {0x5597157640?, 0x40011533b0?, 0x559524005c?})
        /usr/local/go/src/encoding/json/decode.go:374 +0x40
encoding/json.(*decodeState).unmarshal(0x4001153440, {0x5597157640?, 0x40011533b0?})
        /usr/local/go/src/encoding/json/decode.go:181 +0x204
encoding/json.Unmarshal({0x400069c2d0, 0xef, 0xef}, {0x5597157640, 0x40011533b0})
        /usr/local/go/src/encoding/json/decode.go:108 +0xf4
github.com/docker/docker/libnetwork/drivers/ipvlan.(*configuration).SetValue(0x4000d18050?, {0x400069c2d0?, 0x23?, 0x23?})
        /go/src/github.com/docker/docker/libnetwork/drivers/ipvlan/ipvlan_store.go:230 +0x38

Para mitigar esto, los usuarios afectados pueden volver a una versión anterior y eliminar la red, luego actualizar de nuevo. Como alternativa, se puede eliminar todo el almacén de redes y recrear las redes después de la actualización. El almacén de redes se encuentra en /var/lib/docker/network/files/local-kv.db. Si el daemon está utilizando un --data-root alternativo, sustituye /var/lib/docker por la ruta alternativa.

Kata Containers (hilo de seguimiento)

La rama 23.0 ofrece soporte para los shims de containerd alternativos, como io.containerd.runsc.v1 (gVisor) e io.containerd.kata.v2 (Kata Containers).

Al usar el runtime de Kata Containers, salir de una sesión de exec detiene el contenedor en ejecución y cuelga la CLI conectada si se abrió una TTY. No existe mitigación en este momento más allá de evitar hacer exec en contenedores que se ejecutan bajo el runtime de Kata.

La causa raíz de este problema es un error de larga data en Moby. Esto se resolverá en una versión futura. Ten en cuenta que el soporte para runtimes OCI alternativos es una nueva característica y que se pueden descubrir problemas similares a medida que más usuarios comiencen a ejercer esta funcionalidad.