изображение docker отличается при запуске с другого хоста

#c #docker #gcc

#c #docker #gcc

Вопрос:

Во время создания сторонней библиотеки ( libtorch если это имеет значение) в контейнере docker я столкнулся с ошибкой отсутствия включаемого файла. Тот же процесс сборки работал нормально при запуске процесса сборки с хоста Ubuntu 16.04, но при запуске с хоста Ubuntu 18.04 файл отсутствовал.

После небольшого отслеживания я просто запускаю базовый контейнер от NVidia и ищу файл. Это результаты, которые я получаю:

Ubuntu 16.04 host :

 $ uname -a
Linux ub-carmel 4.15.0-123-generic #126~16.04.1-Ubuntu SMP Wed Oct 21 13:48:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

$ docker --version
Docker version 19.03.13, build 4484c46d9d

$ docker pull  nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04

11.1-cudnn8-devel-ubuntu18.04: Pulling from nvidia/cuda
Digest: sha256:c5bf5c984998cc18a3f3a741c2bd7187ed860dc6d993b6fb402d0effb9fe6579
Status: Image is up to date for nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
$ docker run -it  nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
root@2ecc17248fab:/# ll /usr/lib/gcc/x86_64-linux-gnu/7/include | grep ia32
-rw-r--r-- 1 root root   7817 Dec  4  2019 ia32intrin.h
 

Ubuntu 18.04 host :

 $ uname -a
Linux ub-carmel-18-04 5.4.0-56-generic #62~18.04.1-Ubuntu SMP Tue Nov 24 10:07:50 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

$ docker --version
Docker version 19.03.14, build 5eb3275d40

$ docker pull  nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04

11.1-cudnn8-devel-ubuntu18.04: Pulling from nvidia/cuda
Digest: sha256:c5bf5c984998cc18a3f3a741c2bd7187ed860dc6d993b6fb402d0effb9fe6579
Status: Downloaded newer image for nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
$ docker run -it  nvcr.io/nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04
root@89f771e82a51:/# ll /usr/lib/gcc/x86_64-linux-gnu/7/include | grep ia32
root@89f771e82a51:/#
 

Как вы можете видеть, дайджест изображений sha256 одинаков (и соответствует дайджесту из NGC от NVidia здесь)

Сначала я подумал, что, возможно, каким-то скрытым образом включения поступают с хоста, но ia32intrin.h файл существует на обоих хостах

Что может вызвать такую проблему?

Редактировать

Добавлены docker --version выходные данные для каждого хоста. Есть разница, но я сомневаюсь, что это должно вызывать такие проблемы

РЕДАКТИРОВАТЬ 2

Добавлен вывод для uname -a

РЕДАКТИРОВАТЬ 3

Вывод docker version :

Ubuntu 16 :

 $ docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:59 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:01:30 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
 

Ubuntu 18 :

 $ docker version
Client: Docker Engine - Community
 Version:           19.03.14
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        5eb3275d40
 Built:             Tue Dec  1 19:20:17 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.14
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       5eb3275d40
  Built:            Tue Dec  1 19:18:45 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.9
  GitCommit:        ea765aba0d05254012b0b9e595e995c09186427f
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
 

Итак, я протестировал его на разных компьютерах Ubuntu (экземпляры EC2), и в этом случае для обоих 18.04 и 16.04 файл существует. похоже, это проблема на моей машине.
Любые мысли о том, что может вызвать это?

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

1. Имеют ли хосты одинаковую архитектуру? Показать uname -a вывод.

2. @BMitch, спасибо. Добавил его в сообщение

3. Выглядит так же, переключитесь на вывод docker version вместо docker --version . Последний показывает только версию клиента CLI и пропускает сам хост docker.

4. @JaapVersteegh, оба дают одинаковый i386 результат

5. Полная очистка всего и принудительная повторная загрузка всех слоев решили проблему. Спасибо вам обоим за помощь

Ответ №1:

Лучше всего предположить, что извлеченные слои на хосте Ubuntu 18.04 каким-то образом повреждены. Основной вариант очистки — сбросить docker. Это приведет к удалению всех изображений, томов, контейнеров, журналов, сетей, всего, поэтому создайте резервную копию всего, что вы хотите сохранить, перед запуском этого:

 sudo -s # these commands need root
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
exit # exit sudo