Две частые задачи при работе с Docker: подключить собственный реестр образов без HTTPS и освободить место, которое съели старые образы и контейнеры. Полный справочник команд — в документации Docker.
Ошибка «server gave HTTP response to HTTPS client»
При загрузке образа из внутреннего реестра появляется ошибка:
Error response from daemon: Get : http: server gave HTTP response to HTTPS client
Docker по умолчанию обращается к реестрам только по HTTPS, а ваш реестр работает по обычному HTTP. Нужно явно разрешить его в файле /etc/docker/daemon.json. Если файла нет, создайте его; если есть, добавьте ключ к существующим настройкам, а не заменяйте файл целиком:
{
"insecure-registries" : ["repo:5000"]
}
Вместо repo:5000 укажите адрес и порт своего реестра, затем перезапустите Docker:
systemctl restart docker
HTTP передаёт образы без шифрования, поэтому так стоит делать только во внутренней сети. Для постоянной работы лучше выпустить реестру сертификат.
Как освободить место на диске
Сначала посмотрите, что сколько занимает:
docker system df
Остановить ненужные контейнеры и удалить всё неиспользуемое:
docker stop container1 container2 ...
docker system prune -a --volumes
Будьте осторожны: docker system prune -a --volumes удаляет все остановленные контейнеры, все образы, которые не используются запущенными контейнерами, и все тома без контейнеров. Если в томах лежат данные, например база, они пропадут. Без ключа --volumes тома не трогаются.