Рейтинг:8

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

флаг tr

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

Подготовка к распаковке .../docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb ...
Драйвер хранилища aufs больше не поддерживается.
Убедитесь, что ни один из ваших контейнеров не
с помощью драйвера хранилища aufs удалите каталог
/var/lib/docker/aufs и повторите попытку.
dpkg: ошибка обработки архива /var/cache/apt/archives/docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb (--unpack):
 новый подпроцесс сценария предварительной установки пакета docker.io вернул статус выхода ошибки 1
dpkg: ошибка при очистке:
 установленный подпроцесс сценария после установки пакета docker.io вернул статус ошибки 1

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

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

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

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

Вы правы насчет этого в общем случае. К сожалению, Docker является исключением. ( ¦ )

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

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

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

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

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

Artur Meinild avatar
флаг vn
Как насчет установки Docker из [официальных репозиториев](https://docs.docker.com/engine/install/ubuntu/) вместо версии Canonicals (docker.io)? Я делаю это и запускаю последнюю версию без проблем.
Gilles 'SO- stop being evil' avatar
флаг tr
@ArturMeinild Проблема не в запуске последней версии, а в обновлении версии, которая у меня сейчас есть.
Artur Meinild avatar
флаг vn
Каково содержимое `/var/lib/docker/aufs`?
Gilles 'SO- stop being evil' avatar
флаг tr
@ArturMeinild `diff`, содержащий каталоги, имена которых состоят из 64 шестнадцатеричных цифр (некоторые с суффиксом `-init`) и содержимое которых, насколько я могу судить, представляет собой файлы, измененные из базового образа. `слои`, содержащие файлы с похожими именами, содержимое которых представляет собой текстовые файлы с 64 шестнадцатеричными цифрами в строке. `mnt` с пустыми каталогами.
Gilles 'SO- stop being evil' avatar
флаг tr
@ArturMeinild Эта страница мне совсем не полезна. Это объясняет, как работают драйверы хранения, но меня это не волнует. Мне нужно обновить мою _существующую_ систему. У меня есть контейнеры, которые в настоящее время используют aufs. Как мне перенести их на оверлеи?
BjornW avatar
флаг cn
Тоже попал на это сейчас. Можно ли придержать docker.io на старой версии? У меня есть рабочая станция с десятками контейнеров, которые не так просто перестроить, и я не могу тратить на это часы из-за обновления LTS (!)... :/
Gilles 'SO- stop being evil' avatar
флаг tr
@BjornW Да, вы можете держать пакет докеров. Но это означает, что вы остаетесь с любыми уязвимостями безопасности, которые могут быть обнаружены в этой версии.
BjornW avatar
флаг cn
Да, удалось удержать его сейчас и завершить обновление других пакетов. можно было бы сделать, так как другие выложили скрипты, которые могут мигрировать контейнеры). Спасибо за ответ, и, кстати, я не адресую эту тираду вам, конечно :)
Gilles 'SO- stop being evil' avatar
флаг tr
@BjornW Если вы нашли способ автоматической миграции контейнеров, отправьте ответ здесь!
BjornW avatar
флаг cn
@Gilles'SO-stopbeingevil' Интересно, работает ли это: https://stackoverflow.com/questions/44745304/how-to-move-images-of-docker-in-aufs-directory-to-overlay2 с использованием сохранения докера / докер загрузки
Рейтинг:6
флаг vn

От официальная документация по докеру - как настроить драйвер хранилища для использования OverlayFS вместо АУФС.

  1. Остановить Докера.

    sudo systemctl остановить докер
    
  2. Скопируйте содержимое /var/библиотека/докер на временное место.

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

    {
       "драйвер хранилища": "overlay2" 
    }
    

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

  4. Запустите Докер.

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

    $ информация о докере
    
    Контейнеры: 0
    Изображения: 0
    Драйвер хранилища: overlay2
     Резервная файловая система: xfs
     Поддерживает d_type: правда
     Нативное оверлейное различие: правда
    <...>
    

Докер теперь использует оверлей2 драйвер хранилища.

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

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

Gilles 'SO- stop being evil' avatar
флаг tr
Меня смущает: «Тогда вам нужно заново создать свои контейнеры и снова получить все образы с новым драйвером хранилища. Сопоставленные данные контейнера в томах не должны изменяться». Я не знаю, что означает выражение «сопоставленные данные контейнера в томах». Что сохраняется на этом этапе? Мне кажется странным, что я буду повторно загружать базовые образы, которые не изменяются выбором драйвера хранилища, но будут локальные модификации, даже если это то, о чем драйвер хранилища?
Artur Meinild avatar
флаг vn
Теперь я не знаю вашей полной настройки Docker, но, надеюсь, ваши постоянные данные отделены от данных Docker. Данные среды выполнения, которые используют драйвер хранилища, должны быть «только» временными данными, все, что вы хотите сохранить, должно быть отображено в другом месте как тома (именованные или прямые пути). Я предполагаю это, потому что, если это не так, миграция ваших контейнеров будет очень сложной.
Artur Meinild avatar
флаг vn
Думайте об этом как о создании всех ваших контейнеров с нуля, но с постоянными данными.
флаг in
Драйвер aufs был полностью удален из обновления LTS docker.io? .. или я могу временно установить серверную часть хранилища на «overlay2», обновить и просто переключиться обратно?
флаг in
Я просмотрел несколько руководств по резервному копированию/восстановлению образов и резервному копированию/восстановлению контейнеров, и абсолютно ни одно из них не объясняет, как восстановить ваши контейнеры такими, какими они были, чтобы вы могли просто продолжить с того места, на котором остановились.
Mave avatar
флаг id
@Brunis Вы когда-нибудь находили ответ? Я только что потерял все свои изображения и контейнеры :|
флаг in
@Mave, я перенес все в docker-compose.Мне потребовалось несколько дней, прежде чем я смог просто воссоздать свои контейнеры, и образ pgsql был правильно сопоставлен с файловой системой, в которой находились мои файлы db. Какой кошмар. Не дожидаясь релизов LTS снова, какая шутка, что нет пути обновления с LTS -> LTS..
Рейтинг:0
флаг in

Обратите внимание, что если вам нужно было переместить каталог данных в другое место (например, через "корень данных"вариант в демон.json) вам нужно удалить оба каталога aufs, один под новым корень данных и тот, что под /var/библиотека/докер прежде чем приступить к установке пакета

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.