docker: Ошибка ответа от демона: не удалось создать шим: создание OCI runtime не удалось

Вопрос или проблема

Я сталкиваюсь с этой ошибкой при запуске даже официального образа Docker, такого как OpenJDK или даже hello-world:

# docker run hello-world
docker: Ответ ошибки от демона: не удалось создать шиму: создание OCI runtime не удалось:
container_linux.go:380: начало процесса контейнера вызвало: process_linux.go:402:
получение pid финального дочернего процесса из канала вызвало: EOF: неизвестно.

Моя ОС:

# rpm --query centos-release
centos-release-7-5.1804.4.el7.centos.x86_64

и моя версия Docker:

# docker -v
Версия Docker 20.10.14, сборка a224086

Ошибка появляется без изменений или обновлений.
Как я могу расследовать причину этой проблемы?

Стандартное ядро CentOS 7 (3.10) имеет некоторые проблемы с последними версиями Docker.
Его необходимо обновить до версии ядра 5+.

https://forums.docker.com/t/centos7-docker-hello-world-fails/68941/4

Я использую CentOS 7.6, но версия ядра была 3.10. Поэтому я увидел то же сообщение после обновления версии docker-ce до версии Docker 18.09.2, сборка 6247962. Чтобы решить эту проблему, я обновил версию ядра до 4.20, тогда Docker заработал хорошо. Я следовал процессу обновления ядра в CentOS на этой странице.

Полезные ссылки для обновления ядра CentOS:

Ответ или решение

Ошибка, с которой вы столкнулись, связана с запуском контейнеров Docker на CentOS 7 с устаревшей версией ядра. Сообщение об ошибке "failed to create shim: OCI runtime create failed" указывает на то, что система не может создать или управлять процессом контейнера, что обычно связано с несовместимостью между версией ядра и используемым Docker. Ваша версия Docker (20.10.14) требует обновления ядра в CentOS до версии 4 или выше.

Поддержка программного обеспечения Docker на CentOS 7

CentOS 7 поставляется с ядром версии 3.10, которое имеет известные проблемы с более новыми версиями Docker. Когда вы пытаетесь запустить контейнер, Docker полагается на ряд функциональных возможностей, доступных только в более свежих версиях ядра.

Ваша система может успешно работать с устаревшим ядром для ряда других задач, однако Docker требует определенных функций, таких как cgroups и namespaces, которые не полностью поддерживаются в версии ядра 3.10. Например, возможности управления ресурсами и изоляции контейнеров были существенным образом улучшены в более поздних версиях ядра.

Шаги по решению проблемы

  1. Проверка текущей версии ядра:
    Убедитесь, какую версию ядра вы используете в данный момент:

    uname -r
  2. Обновление ядра:
    Если версия ядра ниже 4.0, настоятельно рекомендуется обновить ее. Вы можете использовать следующие ресурсы для выполнения обновления:

    Обычно процесс обновления включает установку нового ядра с помощью пакетов elrepo:

    yum install --enablerepo=elrepo-kernel kernel-ml

    После установки перезагрузите систему:

    reboot
  3. Проверка состояния Docker:
    После перезагрузки снова проверьте версию ядра и запустите контейнер:

    docker run hello-world

Дополнительные устранение неполадок

Если после обновления ядра проблема не решается, есть несколько дополнительных шагов, которые вы можете предпринять:

  • Переустановка Docker:
    Убедитесь, что у вас установлена последняя версия Docker. Переустановите Docker для устранения возможных конфигурационных ошибок:

    yum remove docker docker-common
    yum install docker
  • Проверка журналов:
    Изучите журналы системы для получения дополнительной информации об ошибках Docker:

    journalctl -u docker.service
  • Проверка конфигурации SELinux:
    Убедитесь, что SELinux настроен правильно. Возможные ограничения могут мешать Docker:

    sudo setenforce 0

    Это временно отключит SELinux, чтобы проверить, является ли он причиной проблемы.

Заключение

Регулярное обновление ядра и программного обеспечения имеет критическое значение для поддержания безопасности и производительности вашей системы. Если вышеуказанные шаги не помогут решить проблему, рекомендуется обратиться за поддержкой в сообщества или форумы Docker и CentOS для получения дальнейшей помощи.

Оцените материал
Добавить комментарий

Капча загружается...