Состояние завершения сборки Docker 127 (При обработке были обнаружены ошибки: libc6:amd64)

#docker #dockerfile #python-3.7 #ubuntu-20.04

Вопрос:

Окружающая среда:

 Ubuntu 20.04.3 LTS
Docker version 20.10.8, build 3967b7d
Kernel version 5.11.0-27-generic
 

Докерфайл

 FROM python:3.7-slim-buster as base

RUN echo 'deb http://deb.debian.org/debian testing main' >> /etc/apt/sources.list 

    amp;amp; apt-get update -y 

    amp;amp; apt-get --fix-broken install -y libssl1.1 python3-dev python3-pip python3-setuptools cmake build-essential libgl1-mesa-glx ffmpeg libsm6 libxext6 gcc-10 wget libpq-dev 

    amp;amp; rm -rf /var/lib/apt/lists/*
    .
    .
    .
 

При выполнении приведенной ниже команды я получаю журналы ошибок, которые отображаются ниже.

 sudo docker build -t ProjectImage:0.0.1 .
 

Журналы ошибок

 .
.
.
debconf: delaying package configuration, since apt-utils is not installed
Fetched 275 MB in 2min 22s (1937 kB/s)
Selecting previously unselected package gcc-11-base:amd64.
(Reading database ... 6840 files and directories currently installed.)
Preparing to unpack .../gcc-11-base_11.2.0-4_amd64.deb ...
Unpacking gcc-11-base:amd64 (11.2.0-4) ...
Setting up gcc-11-base:amd64 (11.2.0-4) ...
Selecting previously unselected package libgcc-s1:amd64.
(Reading database ... 6845 files and directories currently installed.)
Preparing to unpack .../libgcc-s1_11.2.0-4_amd64.deb ...
Unpacking libgcc-s1:amd64 (11.2.0-4) ...
Replacing files in old package libgcc1:amd64 (1:8.3.0-6) ...
Setting up libgcc-s1:amd64 (11.2.0-4) ...
(Reading database ... 6847 files and directories currently installed.)
Preparing to unpack .../libc6_2.31-17_amd64.deb ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Checking for services that may need to be restarted...
Checking init scripts...
Unpacking libc6:amd64 (2.31-17) over (2.28-10) ...
Setting up libc6:amd64 (2.31-17) ...
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: error processing package libc6:amd64 (--configure):
 installed libc6:amd64 package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
 libc6:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
 

Сборка завершится неудачно, и ошибка будет зарегистрирована, как указано выше.

Я пытался обновить свою операционную систему, удалить неиспользуемые пакеты, использовать новую операционную систему для создания образа docker, но она всегда возвращала эту ошибку. Есть ли что-то, что я упускаю из виду? Например, некоторые требуемые зависимости или некоторые несовместимые версии пакетов? Спасибо

Комментарии:

1. Вы пытаетесь выполнить крупномасштабное обновление ОС внутри своего файла Dockerfile; libc6 пакет является системным компонентом очень низкого уровня. Можете ли вы запустить файл Dockerfile FROM на более новой базе Python или Debian, у которой уже есть нужная вам версия?

2. @DavidMaze я пытался использовать FROM python:3.9.7-slim-buster as base , но все равно попал в эту ошибку. Я не слишком уверен, что пакет libc6, который мне нужен, находится в этой версии, хотя это один из новых пакетов на сайте python docker hub . Я попробовал «С 3.10.0rc2-slim-buster в качестве базы», но я считаю, что в моем синтаксисе есть ошибка, у меня нет репозитория

3. @DavidMaze Я обнаружил, что был неосторожен и пропустил python: в своей сборке версии 3.10. После использования новейшей версии FROM python:3.10.0rc2-slim-buster as base я смог решить эту проблему. Спасибо

Ответ №1:

Как прокомментировал @DavidMaze

В исходном файле dockerfile использовалась более старая версия python, которая содержит старую версию libc6 .

И поскольку файл dockerfile используется для крупномасштабного обновления операционной системы, это может вызвать проблемы с устаревшим системным компонентом очень низкого уровня.

Измените заголовок файла dockerfile с FROM python:3.7-slim-buster as base на FROM python:3.10.0rc2-slim-buster as base который будет использоваться версия python с более новой версией libc6