Ошибка обновления Docker: драйвер хранилища aufs больше не поддерживается

У меня есть машина Ubuntu с установленным Docker. (Версия Ubuntu - 20.04, но это также влияет на 18.04 и, возможно, также на версии, отличные от LTS.) Обновление пакета docker.io до текущей версии с focal-security ] терпит неудачу:

Preparing to unpack .../docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb ...
The aufs storage-driver is no longer supported.
Please ensure that none of your containers are
using the aufs storage driver, remove the directory
/var/lib/docker/aufs and try again.
dpkg: error processing archive /var/cache/apt/archives/docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb (--unpack):
 new docker.io package pre-installation script subprocess returned error exit status 1
dpkg: error while cleaning up:
 installed docker.io package post-installation script subprocess returned error exit status 1

Это известная ошибка , но ошибка была помечена как «не будет исправлена» в соответствии с политикой упаковки Ubuntu Docker .

Цитата нескольких человек здесь:

Это критическое изменение для обновления, которое не должно происходить в версии LTS.

Обновление, требующее такого большого ручного вмешательства, никогда не должно происходить в выпуске LTS.

В общем случае вы правы. К сожалению, Docker - исключение. (…)

Итак, в качестве исключения для Docker, мы обновляемся до более новых выпусков основной ветки разработки, не заботясь об обратной совместимости поведения самого Docker, вместо этого полностью полагаясь на решения основной ветки разработки. В этом случае и основываясь исключительно на анализе, уже представленном другими здесь, это означает, что мы не ожидаем, что сами исправим драйвер хранилища aufs обратно в нашу упаковку. (…)

Следуя политике в ее нынешнем виде, мы не рассчитываем исправить это, и поэтому я отмечаю, что эта ошибка не исправляется.

Я считаю, что рассуждения сбивают с толку - если я использую стабильный дистрибутив, я ожидаю, что обновления будут плавными, и я не ожидаю, что у меня будет последняя версия программ. Если мне нужен прокатный релиз, я знаю, где его найти, и он не будет называться LTS. Но это не место для обсуждения.

У меня вопрос, что мне делать дальше? Как мне «убедиться, что ни один из [моих] контейнеров не использует драйвер хранилища aufs»? Сохранить старую, не поддерживаемую версию Docker не нужно. Мне нужны обновления безопасности.

Ни один из моих контейнеров не использует расширенные функции, которые зависели бы от драйвера хранилища. Я полностью доволен обновлением или переносом моих контейнеров. Как мне это сделать?

-2
задан 31 August 2021 в 22:34

1 ответ

Из официальной документации Docker - как настроить драйвер хранилища на использование OverlayFS вместо AUFS.

  1. Остановите Docker.

    sudo systemctl stop docker
    
  2. Скопируйте содержимое /var/lib/docker во временное место.

    cp -au /var/lib/docker /var/lib/docker.bk
    
  3. Edit /etc/docker/daemon.json. Если он еще не существует, создайте его. Предполагая, что файл был пуст, добавьте следующее содержимое.

    {
     "storage-driver": "overlay2" 
    }
    

    Docker не запускается, если файл daemon.json содержит плохо сформированный JSON.

  4. Запустите Docker.

    sudo systemctl start docker
    
  5. Убедитесь, что демон использует драйвер хранилища overlay2. Используйте команду docker info и найдите Storage Driver и Backing filesystem.

    $ docker info
    
    Контейнеры: 0
    Изображения: 0
    Драйвер хранилища: overlay2
     Резервная файловая система: xfs
     Поддерживает d_type: true
     Встроенный дифф оверлея: true
    <...>
    

Docker теперь использует драйвер хранилища overlay2.

Затем вам нужно заново создать контейнеры и получить все образы заново с новым драйвером хранения. Сопоставленные данные контейнеров в томах должны остаться неизменными.

После этого вы можете удалить каталог /var/lib/docker/aufs и продолжить обновление пакета Docker.

0
ответ дан 4 September 2021 в 09:24

Другие вопросы по тегам:

Похожие вопросы: