Примечания к выпуску Docker Engine 23.0

Примечание

Начиная с версии Docker Engine 23.0.0, Buildx распространяется в отдельном пакете: docker-buildx-plugin. В более ранних версиях Buildx был включён в пакет docker-ce-cli. При обновлении до этой версии Docker Engine обязательно обновляет все пакеты. Например, на Ubuntu:

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

Дополнительные сведения об обновлении Docker Engine см. в Инструкции по установке Docker Engine для вашей операционной системы.

На этой странице рассмотрены последние изменения, дополнения, известные проблемы и исправления для Docker Engine версии 23.0.

Для получения дополнительной информации о:

Начиная с версии 23.0.0, Docker Engine отказывается от использования версий CalVer и начинает использовать Формат версии SemVer. Изменение формата версии — это ступенька к совместимости модуля Go, но репозиторий ещё не использует модули Go и по-прежнему требует использования «+несовместимой» версии. Продолжается работа над совместимостью модуля Go в будущем выпуске.

23.0.4

17 апреля 2023 г.

Полный список запросов на вытягивание и изменений в этом выпуске см. в соответствующих вехах GitHub:

Исправления ошибок и улучшения

  • Исправлено падение производительности в Docker CLI 23.0.0 docker/cli # 4141.

  • Исправлен индикатор выполнения на docker cp, который не работал должным образом docker/cli # 4157.

  • Исправлено завершение оболочки для docker compose --file docker/cli # 4177.

  • Исправлена ошибка, вызванная неправильной обработкой «пулов адресов по умолчанию» в daemon.json moby/moby#45246.

Обновления упаковки

23.0.3

2023-04-04

Примечание

Из-за проблемы с репозиториями пакетов CentOS 9 Stream пакеты для CentOS 9 в настоящее время недоступны. Пакеты для CentOS 9 могут быть добавлены позже или в составе следующего релиза исправления (23.0.4).

Исправления ошибок и улучшения

  • Исправлен ряд проблем, из-за которых зашифрованные оверлейные сети Swarm не могли поддерживать свои гарантии, обращаясь к CVE-2023-28841, CVE-2023-28840 и CVE-2023-28842.

    • Отсутствие поддержки ядром зашифрованных оверлейных сетей теперь отображается как ошибка.

    • Зашифрованные оверлейные сети настраиваются с готовностью, а не ждут подключения нескольких узлов.

    • Зашифрованные оверлейные сети теперь можно использовать в Red Hat Enterprise Linux 9 благодаря использованию модуля ядра xt_bpf.

    • Пользователи оверлейных сетей Swarm должны просмотреть GHSA-vwm3-crmr-xfxw, чтобы убедиться, что не произошло непреднамеренного раскрытия.

Обновления упаковки

  • Обновляет containerd до v1.6.20.

  • Обновляет runc до v1.1.5.

23.0.2

2023-03-28

Полный список запросов на вытягивание и изменений в этом выпуске см. в соответствующих вехах GitHub:

Исправления ошибок и улучшения

  • Полностью устранить отсутствующие проверки для apparmor_parser при обнаружении ядра с поддержкой AppArmor. контейнерд/контейнерд#8087, moby/moby#45043

  • Убедиться, что учетные данные удалены из URL-адресов Git при создании информации о сборке BuildKit. Исправления CVE-2023-26054. moby/moby#45110

  • Исправьте анонимные тома, созданные строкой VOLUME в файле Dockerfile, которые исключаются из сокращения тома. moby/moby#45159

  • Исправлена ошибка, из-за которой неправильно распространялись ошибки при удалении томов на узле Swarm. moby/moby#45155

  • Временно обойти ошибку в BuildKit COPY --link, отключив оптимизацию mergeop/diffop. moby/moby#45112

  • Правильно очищайте дочерние задачи при удалении родительского задания Swarm. moby/swarmkit#3112, moby/moby#45107

  • Исправьте логику создания службы Swarm, чтобы можно было использовать вместе GenericResource и сеть не по умолчанию. moby/swarmkit#3082, moby/moby#45107

  • Исправлена поддержка Swarm CSI, требующая, чтобы подключаемый модуль CSI предлагал промежуточные конечные точки для публикации тома. моби/swarmkit#3116, moby/moby#45107

  • Исправлена паника, вызванная буферизацией журнала в некоторых конфигурациях. контейнерд/fifo#47, moby/moby#45051

  • Регистрируйте ошибки в уровне преобразования API REST в Swarm gRPC на уровне отладки, чтобы уменьшить избыточность и шум. moby/moby#45016

  • Исправлена проблема с разрешением DNS, влияющая на контейнеры, созданные с помощью --dns-opt или --dns-search, когда systemd-resolved используется вне контейнера. moby/moby#45000

  • Исправьте панику при регистрации ошибок при обработке DNS-запросов, исходящих из контейнера. moby/moby#44980

  • Улучшите скорость docker ps, разрешив пользователям отказаться от вычислений размера с помощью --size=false. docker/cli # 4107

  • Расширьте поддержку завершения Bash для всех плагинов. docker/cli # 4092

  • Исправить сбой docker stack deploy в Windows, когда присутствуют специальные переменные среды, установленные cmd.exe. docker/cli # 4083

  • Добавляет прямую совместимость для будущих версий API, считая пустые теги образов такими же, как <none>. docker/cli # 4065

  • Атомарно записывает файлы контекста, чтобы значительно снизить вероятность повреждения и улучшить сообщение об ошибке для поврежденного контекста. docker/cli # 4063

Упаковка

23.0.1

09 февраля 2023 г.

Полный список запросов на вытягивание и изменений в этом выпуске см. в соответствующих вехах GitHub:

Исправления ошибок и улучшения

  • Исправьте контейнеры, которые не запускаются, если в ядре включён AppArmor, но apparmor_parser недоступен. moby/moby#44942

  • Исправьте сборки с поддержкой BuildKit со встроенным кэшированием, вызывающие сбой демона. moby/moby#44944

  • Исправлена ошибка, из-за которой BuildKit неправильно загружал кэшированные слои, созданные предыдущими версиями. moby/moby#44959

  • Устранена проблема, из-за которой сети ipvlan, созданные до обновления, препятствовали запуску демона. moby/moby#44937

  • Исправлен сбой драйвера хранилища overlay2 в начале тестирования metacopy при инициализации в неподдерживаемой резервной файловой системе. moby/moby#44922

  • Исправлена ошибка, из-за которой события выхода exec неверно интерпретировались как выходы из контейнера в некоторых средах выполнения, таких как контейнеры Kata. moby/moby#44892

  • Улучшено сообщение об ошибке, возвращаемое интерфейсом командной строки при получении усеченного ответа JSON, вызванного зависанием API в середине запроса. docker/cli # 4004

  • Исправлен неправильный код выхода CLI при попытке выполняет каталог с runc, скомпилированным с использованием Go 1.20. docker/cli # 4004

  • Исправьте неправильное использование аргумента размера --device-write-bps в качестве пути. docker/cli # 4004

Упаковка

23.0.0

01.02.2023

Полный список запросов на вытягивание и изменений в этом выпуске см. в соответствующих вехах GitHub:

Новый

  • Устанавливает Buildx и BuildKit в качестве сборщика по умолчанию в Linux. moby/moby#43992

    • Псевдоним от docker build до docker buildx build. docker/cli # 3314

    • Устаревший построитель по-прежнему можно использовать, явно задав DOCKER_BUILDKIT=0.

    • Существуют различия в том, как BuildKit и устаревший компоновщик обрабатывают многоэтапные сборки. Дополнительные сведения см. в статье Многоэтапные сборки.

  • Добавлена поддержка извлечения сжатых слоев zstd. moby/moby#41759, moby/moby#42862

  • Добавлена поддержка альтернативных сред выполнения OCI в Linux, совместимых с API среды выполнения containerd v2. moby/moby#43887, moby/moby#43993

  • Добавлена поддержка оболочки containerd runhcs в Windows (по умолчанию отключена). moby/moby#42089

  • Добавляет dockerd --validate, чтобы проверяет конфигурацию демона JSON и выйти. moby/moby#42393

  • Добавляет возможность настроить HTTP-прокси демона с помощью флагов или конфигурации JSON. moby/moby#42835

  • Добавлена поддержка двухточечных сетей RFC 3021 (IPv4/31s) и отдельных хостов (IPv4/32s). Для сетей с двумя или менее адресами IPAM не резервирует сеть и широковещательный адрес. moby/moby#42626

  • Добавлена поддержка настройки ipvlan_flag и использования l3s ipvlan_mode в сетевом драйвере ipvlan. moby/moby#42542

  • Добавлена поддержка отображения значения параметра metacopy для драйвера хранилища overlay2. moby/moby#43557

  • Добавлена поддержка описания устройств Windows с использованием синтаксиса IDType://ID. moby/moby#43368

  • Добавлен отчёт о версиях RootlessKit, slirp4netns и VPNKit. moby/moby#42330

  • Добавить экспериментальную поддержку кластерных томов SwarmKit (CSI). moby/moby#41982

    • CLI: добавляет параметры тома кластера (CSI) в docker volume. docker/cli # 3606

    • CLI: добавлена поддержка кластерного тома (CSI) в docker stack. docker/cli # 3662

  • Добавляет поддержку заданий SwarmKit в docker stack deploy. docker/cli # 2907

  • Добавляет команду docker stack config для вывода объединенных и интерполированных файлов конфигурации, используемых stack deploy. docker/cli # 3544

  • Добавляет новую команду docker context show, которая печатает имя текущего контекста. docker/cli # 3567

  • Добавляет сокращенный опция --format="{{ json . }}" --format=json ко всем командам, поддерживающим флаг --format. docker/cli # 2936

  • Добавляет параметр --quiet в команды docker create и docker run для подавления вывода при извлечении образа. docker/cli # 3377

  • Добавляет параметр --force в подкоманду docker network rm. Заставляет CLI возвращать код выхода 0, даже если сеть не существует. Не влияет на процедуру удаления сети на стороне сервера. docker/cli # 3547

  • Добавляет параметр --signal к docker stop и docker restart. docker/cli # 3614

  • Добавляет флаг -v/--version в docker-proxy. moby/moby#44703

  • Плагины теперь обнаруживаются по известным путям на уровне пользователя, когда демон работает в режиме без рута. moby/moby#44778

  • Теперь демон корректно обрабатывает распространенные альтернативные кодировки JSON в файле конфигурации JSON и сообщает о полезных ошибках. moby/moby#44777, moby/moby#44832

    • Допускается кодировка UTF-8 с отметкой порядка следования байтов.

    • Принимается UTF-16 с отметкой порядка следования байтов.

    • Недопустимый UTF-8 сообщается рано и с понятным сообщением об ошибке.

  • Разрешить использование STOPSIGNAL через docker commit. moby/moby#43369

  • Добавляет новый параметр в драйвер журнала awslogs, позволяющий пропустить создание потока журнала в CloudWatch. moby/moby#42132

  • Добавляет новый параметр в драйвер журнала awslogs, чтобы указывает формат журнала, отправляемого в CloudWatch. moby/moby#42838

  • Добавляет новый параметр в драйвер журнала fluentd, чтобы установить интервал повторного подключения. moby/moby#43100

  • Добавляет новые установщики параметров в клиент API Go: WithTLSClientConfigFromEnv(), WithHostFromEnv() и WithVersionFromEnv(). moby/moby#42224

  • Добавить генерацию завершения команды оболочки с помощью подкоманды docker completion. docker/cli # 3429

  • API: добавляет заголовок Swarm к GET/_ping и HEAD/_ping, что позволит обнаруживать поддержку Swarm одним запросом. moby/moby#42064

  • API: добавляет параметр signal к POST/containers/{id}/stop и POST/containers/{id}/restart, чтобы установить используемый сигнал. moby/moby#43206

  • API: добавляет параметр CreateMountPoint в POST/containers/create. moby/moby#43484

  • API: добавляет параметр shared-size в GET/images/json, чтобы разрешить вычисление образов общего размера. moby/moby#42531

  • API: добавляет параметр type в GET/system/df, чтобы контролировать, какие типы объектов учитывать при расчете использования диска. moby/moby#42559

  • systemd: используйте контейнер, управляемый systemd, вместо контейнера, управляемого демоном. moby/moby#42373

  • systemd: Начать docker.service после time-set.target. moby/moby#43107

Удаленный

  • Удалена поддержка чтения конфигурации из ~/.dockercfg. docker/cli # 2504

  • Удаляет параметры демона -g и --graph в пользу --data-root. docker/cli # 3739

  • Удаляет сортировку результатов на стороне клиента в пользу порядка, в котором возвращает поисковый API. docker/cli # 3470

  • Удаляет предупреждения, связанные с устаревшими драйверами устройств хранения, из интерфейса командной строки. Предупреждения теперь обрабатываются демоном. docker/cli # 3542

  • Удаляет клиентское поле Experimental из docker version. docker/cli # 3543

  • Требуйте явного согласия на использование устаревших драйверов хранения и не выбирайте их автоматически при обновлении. moby/moby#43378

  • Удалена устаревшая поддержка драйверов хранения overlay и overlay2 для резервных файловых систем без поддержки d_type. moby/moby#43472

  • Удаляет устаревший параметр overrideKernelCheck из драйвера хранилища overlay2. moby/moby#44279 Уведомление об устаревании

  • Удалена поддержка устаревшей среды выполнения OCI io.containerd.runtime.v1.linux. moby/moby#43695

  • Удаляет LCOW (контейнеры Linux в Windows). moby/moby#42451, moby/moby#42499, moby/moby#42506, moby/moby#42511, moby/moby#42520, moby/moby#42683, moby/moby#42684, moby/moby#42685, moby/moby#43187

  • Удаляет параметры демона, связанные с устаревшими оверлейными сетями, используемыми с автономным Swarm.

  • Удаляет устаревший резервный опция платформы arm. --platform linux/arm/vY теперь будет возвращать ошибку, когда arm/vY недоступен, вместо получения неправильного образа. moby/moby#44414

  • Удаляет устаревшие установщики параметров SetCustomHTTPHeaders(), CustomHTTPHeaders() из клиентского API Go. moby/moby#42694

  • Удаляет устаревший установщик параметров WithDialer() из клиентского API Go. moby/moby#44022

    • Вместо этого используйте WithDialContext().

  • Удаляет реализацию демона opts.QuotedString. Реализация переместилась в CLI. moby/moby#43250

  • Удаляет отдельный идентификатор демона из ключа доверия в демоне и отключает создание ключа доверия. moby/moby#43555

  • API: удаляет устаревший параметр KernelMemory из POST/containers/create в версии API >= 1.42. moby/moby#43214

Устарело

  • Требовать Windows Server RS5 / LTSC 2019 (сборка 17763) как минимум для запуска демона. moby/moby#43254

  • Устаревший BuilderSize в версии API >= 1.42. moby/moby#42608

  • Устареть BuildCache.Parent в пользу недавно представленного BuildCache.Parents в версии API >= 1.42. moby/moby#43908

  • Устареть pkg/urlutil, переместив реализацию на builder/remotecontext/urlutil. moby/moby#43477

Обновления

Безопасность

  • Изменяет разрешения для файлов контейнера hostconfig.json на 0600 (было 0644). moby/moby#41620

  • Исправление --seccomp-profile, не принимающее unconfined, и переименование профиля seccomp по умолчанию в builtin. moby/moby#42481

  • Всегда стройте с поддержкой seccomp и удаляйте тег сборки seccomp. moby/moby#42501

  • Добавляет поддержку seccomp на riscv64. moby/moby#43553

  • Добавлена поддержка установки флагов, передаваемых в seccomp(2) в профилях seccomp. moby/moby#42648

  • Рефакторинг типов seccomp для повторного использования спецификации времени выполнения и добавление поддержки ErrnoRet. moby/moby#42005

  • Добавлена поддержка DefaultErrnoRet в профилях seccomp. moby/moby#42604

  • Добавляет явное поле DefaultErrnoRet в профиль seccomp по умолчанию без изменения поведения. moby/moby#42649

  • Заблокируйте socket с AF_VSOCK в профиле seccomp по умолчанию. moby/moby#44563

  • Повторно включает process_vm_readv и process_vm_writev в профиле seccomp по умолчанию. moby/moby#42083

  • Добавляет системные вызовы, связанные с PKU, в профиль seccomp по умолчанию. moby/moby#43812

  • Разрешить clock_settime64 с CAP_SYS_TIME. moby/moby#43775

  • Разрешить bpf с CAP_BPF и perf_event_open с CAP_PERFMON. moby/moby#43988

  • Явно устанавливает системный вызов clone3 для возврата ENOSYS в профиле seccomp по умолчанию, чтобы гарантировать, что glibc будет правильно использовать clone. moby/moby#42681

Исправления ошибок и улучшения

  • Выполняет overlay2 драйвером хранилища по умолчанию (btrfs и zfs теперь доступны). moby/moby#42661

  • Добавляет счётчик загрузки в команду docker cp. docker/cli # 2708

  • Устарела функция ElectAuthServer и заставила её возвращать реестр по умолчанию без вызова конечной точки API GET/info. docker/cli # 2819

  • Индикаторы выполнения больше не меняются местами при откате служб Swarm. docker/cli # 2940

  • Используйте net.JoinHostPort(), чтобы исправить форматирование адресов IPv6. docker/cli # 2972

  • Сообщения об ошибках CLI теперь выводятся на stderr. docker/cli # 3044

  • Повысьте производительность docker info, если используется пользовательский --format, который использует только локальную информацию. С этим изменением CLI использует API демона только в том случае, если обнаруживает, что необходима информация от демона. docker/cli # 3179

  • Удаляет значение по умолчанию из флага --stop-signal, поскольку оно может не отражать фактическое значение по умолчанию, используемое демоном. docker/cli # 3245

  • Добавляет схему Compose 3.10 в docker stack; разрешить опускать поле version (в результате получается latest). docker/cli # 3257

  • Compose версия 3 теперь эквивалентна 3.x (последней) в docker stack. docker/cli # 3445

  • Исправление зависания <Ctrl-c> в Windows для выхода после запуска контейнера в неинтерактивном режиме. docker/cli # 3302

  • Добавляет относительные исходные пути к команде run во флагах -v/--volume и -m/--mount. docker/cli # 3469

  • docker exec -t теперь устанавливает размер консоли для исполняемого процесса сразу после его создания. docker/cli # 3627

  • Обновляет формат красивого шрифта docker info, чтобы предоставить более подробную информацию об установленных плагинах. docker/cli # 3645

  • Печатать предупреждающие сообщения для команд docker context list и docker context use, когда среда переопределяет контекст. docker/cli # 3668

  • Добавляет пользовательскую аннотацию aliases, которую можно использовать для печати всех доступных псевдонимов для команды. docker/cli # 3694

  • CLI больше не создаёт и не обновляет файл конфигурации CLI при запуске docker context use и выборе текущего контекста. docker/cli # 3721

  • Несуществующие контексты теперь игнорируются при запуске docker context rm --force. docker/cli # 3791

  • Добавлена возможность переопределять целые числа в 0 в файлах Compose. docker/cli # 3812

  • SIGINT (<Ctrl-c>) теперь передаётся запущенным контейнерам, а не вызывает выход из CLI. docker/cli # 3849

  • Улучшите UX docker port CONTAINER, отсортировав порты перед печатью. docker/cli # 3892

  • API: GET/containers/{id}/logs и POST/containers/{id}/attach теперь сообщают, какой формат необработанного потока используется, используя заголовок ответа Content-type для API версии >= 1.42. moby/moby#39812

  • Устанавливает размер песочницы по умолчанию для слоев Windows на 127 ГБ и убедиться, что флаг --storage-opts применяется ко всему хранилищу в Windows. moby/moby#41636

  • Удаляет раздел plugin из файла конфигурации containerd (/var/run/docker/containerd/containerd.toml). moby/moby#41675

  • Отклонить манифесты null во время импорта tar. moby/moby#41842

  • Добавляет конфигурацию оболочки для пользовательских сред выполнения для плагинов. moby/moby#41854

  • Проверка работоспособности контейнера теперь возобновляется при перезапуске демона. moby/moby#41935

  • Квота больше не отключается при очистке драйвера btrfs. moby/moby#42273

  • Доступные хост-устройства теперь можно монтировать в контейнерах без корневого каталога --privileged. moby/moby#42638

  • Исправлена неправильная обработка шаблонов рекурсивных подстановочных знаков **/foo в .dockerignore. moby/moby#42676

  • Расширьте docker import --platform, чтобы разрешить пометить импортированный образ как чужую архитектуру. moby/moby#43103

  • Проверка параметров ЦП в режиме реального времени теперь выполняется при запуске демона вместо выполнения проверок для каждого отдельного контейнера, что позволяет досрочному сбою запуска. moby/moby#43131

  • Заморозить пакет namesgenerator от новых дополнений. Пользователям придется довольствоваться существующими 25359 комбинациями имён прилагательных. moby/moby#43210

  • API: containers/{id}/attach/ws только для потоков по параметрам stdin, stdout и stderr на версии API >= 1.42. moby/moby#43322

  • Исправлена ошибка, из-за которой UDP-трафик в контейнерах не работал после перезапуска контейнера при постоянном трафике. moby/moby#43409

  • Добавляет поддержку извлечения образов с пользовательскими уровнями функций микроархитектуры amd64, поддерживаемыми последними версиями Go, GCC, LLVM и другими инструментами компиляции. moby/moby#43434

  • Улучшить проверку недействительных запросов JSON в API. moby/moby#43463

  • Уменьшает влияние медленных запусков exec на проверки работоспособности. Тайм-аут проверки теперь применяется только к продолжительности выполнения команды проверки работоспособности. Время, необходимое для запуска команды, больше не учитывается в тайм-ауте. moby/moby#43480

  • Размер консоли tty задается сразу при создании. moby/moby#43593, moby/moby#43622

  • Исправлено монтирование overlay2, которое не очищалось после неудачного запуска контейнера или завершения работы демона. moby/moby#43659

  • Сопоставляет разрешение списка манифестов с containerd. moby/moby#43675

  • Пропустить использование firewalld для работы в сети, когда демон работает в режиме без root. moby/moby#43813

  • Пользовательские сети NAT теперь создаются заново после перезапуска демона, если они отсутствуют в Windows. moby/moby#43858

  • Исправлено завершение процесса проверки работоспособности контейнера по истечении времени ожидания. moby/moby#43994

  • Исправьте live-restore с политиками перезапуска и ссылками на тома. moby/moby#44237

  • API: только анонимные тома теперь удаляются по умолчанию в версии API >= v1.42. Передать фильтр all=true, чтобы удаляет именованные тома в дополнение к анонимным. moby/moby#44259

  • API: поддержка одновременных вызовов на конечной точке GET/system/df. moby/moby#42715

  • Повысить надежность демона, который сбрасывает стек и завершает работу с кодом 2 при отправке сигнала SIGQUIT. moby/moby#44831

  • Повысьте надежность docker logs -f в Windows и предотвратите удаление новых строк в драйвере журнала local. moby/moby#43294

  • Исправлена редкая взаимоблокировка в демоне, вызванная буферизацией журналов контейнера. moby/moby#44856

  • Улучшить обработку ошибок в различных операциях с файловой системой, чтобы демон мог запускаться в резервной файловой системе overlayfs. moby/moby#44834

  • Исправлена ошибка, из-за которой --ipc=host не обрабатывался правильно, когда демон работал в режиме без прав root. moby/moby#44863

  • Исправить давний множество проблем, из-за которых устаревшие записи conntrack приводили к неправильной маршрутизации трафика UDP для контейнеров. moby/moby#44752

  • Исправьте полузарегистрированные контейнеры, указанные в API, а также разыменование нулевого указателя и панику, вызванные использованием частично зарегистрированного контейнера в вызовах API. moby/moby#44633

  • Исправлена ошибка при создании цепочки ip6tables DOCKER-USER. moby/moby#44845

  • Исправлена ошибка очистки правил iptables, когда команда ip6tables недоступна. moby/moby#44727

  • Исправлена проблема, из-за которой некоторые правила NAT iptables не очищались после включения прокси-сервера пользовательского пространства. moby/moby#44811

  • Исправьте потенциально утечку процесса в редких случаях, когда очистка неудачной попытки запуска контейнера была выполнена неправильно. moby/moby#44400

  • Исправьте время CreatedAt тома, отражающее инициализацию, а не создание. moby/moby#44725

  • Исправлена ошибка, из-за которой интерфейс командной строки неправильно сообщал о несовместимом сервере вместо недостижимого сервера в некоторых командах. docker/cli # 3901, docker/cli # 3904

  • Исправить неработающее завершение томов в Zsh. docker/cli # 2998

  • Улучшить вывод docker context при наличии недопустимого контекста. docker/cli # 3847

  • Удалено оформление ANSI аннотаций справки CLI, когда вывод не является TTY, и добавлена новая строка для удобочитаемости. docker/cli # 3973

  • Добавляет docker container remove в качестве псевдонима для docker container rm. docker/cli # 3986

Известные вопросы

apparmor_parser (проблема с отслеживанием)

Некоторые пользователи Debian сообщают о проблемах с запуском контейнеров после обновления до ветки 23.0. Сообщение об ошибке указывает на то, что проблема связана с отсутствием двоичного файла 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

Обходной путь для этой проблемы — установить пакет apparmor вручную:

apt-get install apparmor

Встроенный кэш BuildKit (проблема с отслеживанием)

Попытка создать образ с функцией встроенного кэша BuildKit (например, docker build --build-arg BUILDKIT_INLINE_CACHE=1 ., docker buildx build --cache-to type=inline .) приведёт к неожиданному завершению работы демона:

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

Демон перезапустится, если это настроено (например, через systemd) после такого сбоя. Единственное доступное решение в этом выпуске — избегать выполнения сборок с включенной функцией встроенного кэша.

BuildKit с теплым кешем (проблема с отслеживанием)

Если образ был создан с помощью BuildKit в предыдущей версии демона и построен с помощью демона 23.0, ранее кэшированные слои не будут восстановлены правильно. Может показаться, что образ собран правильно, если в Dockerfile не было изменено ни одной строки; однако, если происходит частичная недействительность кеша из-за изменения некоторых строк в Dockerfile, все ещё действительные и ранее кэшированные слои не будут загружены правильно.

Чаще всего это проявляется в том, что файлы, которые должны присутствовать в образе, отсутствуют на этапе RUN или на любом другом этапе, который ссылается на файлы, после изменения некоторых строк в 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

Чтобы смягчить это, предыдущий кеш сборки должен быть отброшен. docker builder prune -a полностью очистит кеш сборки и позволит возобновить затронутые сборки, удалив неправильно обработанные слои кеша.

сети ipvlan (проблема с отслеживанием)

При обновлении до ветки 23.0 наличие любых сетей IPvlan предотвратит запуск демона:

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

Чтобы смягчить это, затронутые пользователи могут понизить версию и удаляет сеть, а затем снова выполняет обновление. В качестве альтернативы можно удаляет все сетевое хранилище, а сети можно создает заново после обновления. Сетевой магазин находится по адресу /var/lib/docker/network/files/local-kv.db. Если демон использует альтернативный --data-root, заменяет альтернативный путь /var/lib/docker.

Ката Контейнеры (проблема с отслеживанием)

Ветвь 23.0 обеспечивает поддержку альтернативных прокладок containerd, таких как io.containerd.runsc.v1 (gVisor) и io.containerd.kata.v2 (контейнеры Kata).

При использовании среды выполнения Kata Containers выход из сеанса exec останавливает работающий контейнер и зависает подключенный интерфейс командной строки, если был открыт TTY. В настоящее время нет никаких средств смягчения, кроме предотвращения выполнения в контейнерах, работающих в среде выполнения Kata.

Основной причиной этой проблемы является давняя ошибка в Moby. Это будет решено в будущем выпуске. Имейте в виду, что поддержка альтернативных сред выполнения OCI — это новая функция, и подобные проблемы могут быть обнаружены по мере того, как все больше пользователей начнут использовать эту функцию.