Переписана документация
This commit is contained in:
351
docs/troubleshooting.md
Normal file
351
docs/troubleshooting.md
Normal 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)
|
||||
Reference in New Issue
Block a user