Переписана документация

This commit is contained in:
Сергей Антропов
2025-10-29 14:47:35 +03:00
parent e466f14d49
commit e4e23b88ca
10 changed files with 2528 additions and 403 deletions

351
docs/troubleshooting.md Normal file
View File

@@ -0,0 +1,351 @@
# 🐛 Решение проблем
## Частые ошибки
### 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 <url>
# Проверка статуса
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)