# 🐛 Решение проблем ## Частые ошибки ### 1. "missing separator. Stop." **Причина:** В Makefile используются пробелы вместо табов. **Решение:** ```bash sed -i 's/^ /\t/' makefile ``` ### 2. "docker: command not found" **Причина:** Docker не установлен или не в PATH. **Решение:** ```bash # Установка Docker curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # Проверка docker version ``` ### 3. "unauthorized: authentication required" **Причина:** Не выполнена авторизация в registry. **Решение:** ```bash make docker login REGISTRY=hub.cism-ms.ru # или docker login hub.cism-ms.ru ``` ### 4. "No rule to make target 'commit'" **Причина:** Использование старых команд без префикса группы. **Решение:** ```bash # Вместо: make commit # Используйте: make git commit ``` ### 5. "Образ не найден" **Причина:** Указан неверный SRC_IMAGE или IMAGE не собран. **Решение:** ```bash # Проверка существующих образов docker images # Сборка образа make docker build IMAGE=myapp TAG=latest ``` ### 6. "Buildx: no builder instance" **Причина:** Buildx не инициализирован. **Решение:** ```bash # Создание builder'а make docker create-builder # Использование builder'а make docker use-builder ``` ## Отладка ### Просмотр конфигурации ```bash # Показать конфигурацию make docker print-config # Проверить образ make docker inspect # Просмотр логов make docker build 2>&1 | tee build.log # Проверка Docker daemon docker info # Проверка доступных образов docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" ``` ## Проблемы с памятью ### Увеличение лимита памяти для Docker ```bash # В /etc/docker/daemon.json { "default-ulimits": { "memlock": { "Hard": -1, "Name": "memlock", "Soft": -1 } } } ``` ### Очистка неиспользуемых ресурсов ```bash # Очистка неиспользуемых образов docker image prune -f # Очистка неиспользуемых контейнеров docker container prune -f # Полная очистка системы docker system prune -a -f ``` ## Проблемы с сетью ### Проверка сетевых настроек ```bash # Проверка сетевых интерфейсов docker network ls docker network inspect bridge # Тестирование подключения make docker check RUN_CMD="ping -c 3 8.8.8.8" # Проверка DNS make docker check RUN_CMD="nslookup google.com" ``` ### Настройка прокси ```bash # Настройка прокси для Docker mkdir -p /etc/systemd/system/docker.service.d cat > /etc/systemd/system/docker.service.d/http-proxy.conf << EOF [Service] Environment="HTTP_PROXY=http://proxy.example.com:8080" Environment="HTTPS_PROXY=http://proxy.example.com:8080" Environment="NO_PROXY=localhost,127.0.0.1" EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` ## Проблемы с правами доступа ### Исправление прав на файлы ```bash # Исправление прав на Makefile chmod +x makefile chmod 644 dockerfile # Проверка прав пользователя make docker check RUN_CMD="id && whoami" # Добавление пользователя в группу docker sudo usermod -aG docker $USER newgrp docker ``` ### Проблемы с SELinux (CentOS/RHEL) ```bash # Временное отключение SELinux sudo setenforce 0 # Постоянное отключение SELinux sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config sudo reboot ``` ## Проблемы с производительностью ### Медленная сборка ```bash # Сборка с подробным выводом make docker build IMAGE=myapp TAG=v1.0.0 QUIET=0 # Анализ времени сборки time make docker build IMAGE=myapp TAG=v1.0.0 # Сборка без кэша для диагностики make docker build IMAGE=myapp TAG=v1.0.0 NO_CACHE=1 ``` ### Большой размер образа ```bash # Анализ размера образа docker history myapp:latest # Анализ слоев docker run --rm -it \ -v /var/run/docker.sock:/var/run/docker.sock \ wagoodman/dive:latest myapp:latest # Сжатие образа make docker save SRC_IMAGE=myapp:latest COMPRESS=1 ``` ## Проблемы с registry ### Ошибки авторизации ```bash # Очистка кэша авторизации docker logout docker login # Проверка конфигурации Docker cat ~/.docker/config.json # Удаление старых токенов rm -rf ~/.docker/config.json docker login ``` ### Проблемы с SSL сертификатами ```bash # Добавление недоверенного registry echo '{"insecure-registries":["registry.example.com:5000"]}' | sudo tee /etc/docker/daemon.json # Перезапуск Docker sudo systemctl restart docker ``` ## Проблемы с Git ### "Not a git repository" ```bash # Инициализация Git репозитория git init git remote add origin # Проверка статуса make git status ``` ### "Git push failed" ```bash # Проверка текущей ветки git branch # Проверка удаленного репозитория git remote -v # Принудительный push (осторожно!) git push --force-with-lease origin main ``` ## Проблемы с архивами ### Ошибка при загрузке архива ```bash # Проверка целостности архива sha256sum -c images/myapp_v1.0.0.tar.gz.sha256 # Проверка размера файла ls -lh images/myapp_v1.0.0.tar.gz # Пересоздание архива make docker save SRC_IMAGE=myapp:latest COMPRESS=1 ``` ### Проблемы с разбиением на части ```bash # Объединение частей архива cat images/myapp_v1.0.0.tar.gz.part.* > images/myapp_v1.0.0.tar.gz # Проверка целостности sha256sum -c images/myapp_v1.0.0.tar.gz.sha256 ``` ## Диагностические команды ### Проверка системы ```bash # Информация о системе uname -a cat /etc/os-release # Информация о Docker docker version docker info # Информация о Make make --version # Информация о Git git --version ``` ### Проверка ресурсов ```bash # Использование диска df -h # Использование памяти free -h # Использование CPU top -n 1 # Процессы Docker ps aux | grep docker ``` ### Логи системы ```bash # Логи Docker sudo journalctl -u docker.service # Логи системы sudo journalctl -f # Логи сборки tail -f logs/build_*.log ``` ## Получение помощи ### Сбор информации для отчета об ошибке ```bash # Создание отчета об ошибке { echo "=== System Info ===" uname -a cat /etc/os-release echo -e "\n=== Docker Info ===" docker version docker info echo -e "\n=== Make Info ===" make --version echo -e "\n=== Git Info ===" git --version echo -e "\n=== Project Config ===" make docker print-config echo -e "\n=== Recent Logs ===" tail -20 logs/build_*.log 2>/dev/null || echo "No logs found" } > bug_report.txt ``` ### Полезные ресурсы - [Docker Documentation](https://docs.docker.com/) - [Make Documentation](https://www.gnu.org/software/make/manual/) - [Git Documentation](https://git-scm.com/doc) - [Stack Overflow](https://stackoverflow.com/questions/tagged/docker)