Что такое ошибка "OCI runtime create failed"?

Ошибка Docker: Error response from daemon: OCI runtime create failed возникает, когда Docker не может создать контейнер из-за проблем с runtime или конфигурацией.

Причины возникновения

  • Проблемы с containerd runtime
  • Неправильная конфигурация контейнера
  • Проблемы с ресурсами системы
  • Конфликты портов или имен
  • Проблемы с образом

Как отладить ошибку

  1. Проверь логи Docker - journalctl -u docker
  2. Проверь containerd - systemctl status containerd
  3. Проверь ресурсы - free -h и df -h
  4. Проверь конфигурацию - docker info

Как исправить ошибку

1. Перезапусти containerd и Docker

 1# Останови Docker
 2sudo systemctl stop docker
 3
 4# Останови containerd
 5sudo systemctl stop containerd
 6
 7# Запусти containerd
 8sudo systemctl start containerd
 9
10# Запусти Docker
11sudo systemctl start docker
12
13# Проверь статус
14sudo systemctl status docker containerd

2. Проверь конфигурацию контейнера

 1# Пример правильной конфигурации
 2apiVersion: v1
 3kind: Pod
 4metadata:
 5  name: my-app
 6spec:
 7  containers:
 8  - name: app
 9    image: nginx:latest
10    ports:
11    - containerPort: 80
12    resources:
13      requests:
14        memory: "64Mi"
15        cpu: "250m"
16      limits:
17        memory: "128Mi"
18        cpu: "500m"

3. Проверь ресурсы системы

 1# Проверь память
 2free -h
 3
 4# Проверь CPU
 5top
 6
 7# Проверь диск
 8df -h
 9
10# Проверь inode
11df -i

4. Очисти Docker систему

1# Очисти все неиспользуемые ресурсы
2docker system prune -a --volumes
3
4# Удали все контейнеры
5docker container prune -f
6
7# Удали все образы
8docker image prune -a -f

5. Проверь образ

1# Проверь детали образа
2docker inspect image-name
3
4# Проверь, что образ работает
5docker run --rm image-name echo "test"
6
7# Попробуй другой образ
8docker run --rm nginx:latest echo "test"

6. Настрой runtime параметры

1// /etc/docker/daemon.json
2{
3  "runtimes": {
4    "runc": {
5      "path": "/usr/bin/runc"
6    }
7  },
8  "default-runtime": "runc"
9}

Как мониторить подобные ошибки

  • Мониторь статус containerd
  • Проверяй ресурсы системы
  • Настрой алерты на ошибки runtime
  • Логируй все попытки создания контейнеров

FAQ

В: Что делать, если containerd не запускается?

О: Проверь логи containerd, убедись в правильности конфигурации и переустанови при необходимости.

В: Как проверить совместимость образа?

О: Попробуй запустить образ с базовой конфигурацией и постепенно добавляй параметры.

В: Что делать при нехватке ресурсов?

О: Увеличь лимиты ресурсов, освободи память/диск или используй более легкие образы.

Лучшие практики

  • Регулярно обновляй Docker и containerd
  • Мониторь ресурсы системы
  • Используй правильные лимиты ресурсов
  • Тестируй образы перед production
  • Веди логи всех операций