- Заменен buildx ls на безопасный buildx inspect - Добавлены диагностические команды для buildx - Создана функция docker-diagnose-buildx для отладки - Добавлена функция docker-reset-builder для сброса - Предварительная загрузка образа moby/buildkit:buildx-stable-1 - Полная очистка buildkit контейнеров - Обновлена документация и справка - Добавлен тестовый скрипт для проверки исправлений Автор: Сергей Антропов Сайт: https://devops.org.ru
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Исправления проблем с Docker Buildx
 | ||
| 
 | ||
| ## Проблема
 | ||
| Команда `docker buildx ls` часто зависает в CI/CD окружениях из-за:
 | ||
| - Мертвых Docker контекстов (tcp://...)
 | ||
| - Проблем с доступом к registry
 | ||
| - Недостаточных привилегий
 | ||
| - Старых/битых builder'ов
 | ||
| 
 | ||
| ## Решение
 | ||
| 
 | ||
| ### 1. Замена `buildx ls` на `buildx inspect`
 | ||
| **Было:**
 | ||
| ```bash
 | ||
| if ! docker buildx ls | grep -q $(DOCKER_BUILDX_BUILDER); then
 | ||
| ```
 | ||
| 
 | ||
| **Стало:**
 | ||
| ```bash
 | ||
| if docker buildx inspect $(DOCKER_BUILDX_BUILDER) >/dev/null 2>&1; then
 | ||
| ```
 | ||
| 
 | ||
| ### 2. Новые надежные функции
 | ||
| 
 | ||
| #### `docker-check-builder`
 | ||
| - Проверяет существование builder'а через `inspect`
 | ||
| - Не зависает на мертвых контекстах
 | ||
| - Возвращает четкий статус
 | ||
| 
 | ||
| #### `docker-create-builder`
 | ||
| - Предварительная загрузка образа `moby/buildkit:buildx-stable-1`
 | ||
| - Очистка старых builder'ов
 | ||
| - Явное указание образа buildkit
 | ||
| - Проверка готовности через `inspect --bootstrap`
 | ||
| 
 | ||
| #### `docker-diagnose-buildx`
 | ||
| - Полная диагностика проблем с buildx
 | ||
| - Проверка версий Docker и Buildx
 | ||
| - Поиск мертвых контекстов
 | ||
| - Проверка доступа к registry
 | ||
| - Проверка Docker socket
 | ||
| - Рекомендации по устранению
 | ||
| 
 | ||
| #### `docker-reset-builder`
 | ||
| - Полная очистка и пересоздание builder'а
 | ||
| - Удаление buildkit контейнеров
 | ||
| - Создание нового builder'а с предварительной загрузкой
 | ||
| 
 | ||
| ### 3. Обновленные команды
 | ||
| 
 | ||
| #### `make docker setup-builder`
 | ||
| - Использует `docker-check-builder` вместо `buildx ls`
 | ||
| - Безопасное создание builder'а
 | ||
| - Предварительная загрузка образа
 | ||
| 
 | ||
| #### `make docker clean-builder`
 | ||
| - Теперь использует `docker-reset-builder`
 | ||
| - Полная очистка buildkit контейнеров
 | ||
| 
 | ||
| #### Новые команды:
 | ||
| - `make docker diagnose` - диагностика проблем
 | ||
| - `make docker reset-builder` - сброс builder'а
 | ||
| 
 | ||
| ### 4. Преимущества
 | ||
| 
 | ||
| ✅ **Нет зависаний** - не использует `buildx ls`  
 | ||
| ✅ **Быстрая диагностика** - четкие сообщения об ошибках  
 | ||
| ✅ **Предварительная загрузка** - избегает проблем с pull в bootstrap  
 | ||
| ✅ **Полная очистка** - удаляет все связанные контейнеры  
 | ||
| ✅ **Подробные логи** - понятные сообщения о процессе  
 | ||
| 
 | ||
| ### 5. Использование
 | ||
| 
 | ||
| ```bash
 | ||
| # Диагностика проблем
 | ||
| make docker diagnose
 | ||
| 
 | ||
| # Сброс builder'а при проблемах
 | ||
| make docker reset-builder
 | ||
| 
 | ||
| # Обычная настройка (теперь безопасная)
 | ||
| make docker setup-builder
 | ||
| 
 | ||
| # Сборка образов
 | ||
| make docker build
 | ||
| ```
 | ||
| 
 | ||
| ### 6. Рекомендации для CI/CD
 | ||
| 
 | ||
| 1. **Используйте `docker-diagnose-buildx`** при проблемах
 | ||
| 2. **Настройте прокси** для доступа к registry
 | ||
| 3. **Очищайте мертвые контексты** регулярно
 | ||
| 4. **Используйте `docker-reset-builder`** при зависаниях
 | ||
| 5. **Проверяйте права доступа** к Docker socket
 | ||
| 
 | ||
| ## Автор
 | ||
| Сергей Антропов  
 | ||
| Сайт: https://devops.org.ru
 |