Мы наблюдаем очень странное поведение при подключении томов с большим объемом данных (например, миллион файлов)
Текущая настройка:
- Хост докера: контейнер Linux от CoreOS1465.7.0 (Божья коровка)
- Клиент версии Docker: 18.06.1-ce
- Хост версии Docker: 17.09.0-ce
Я пробовал разные версиидокеров и CoreO, как новых, так и старых версий без каких-либо различий.Каталог данных на Docker-хосте, вероятно, сопоставлен с каким-то хранилищем, я не уверен насчет настройки здесь, но я могу заполнить детали при необходимости, но с моей точки зрения это выглядит как обычная папка.
Первоначальная ошибка произошла при переключении с анонимного тома, смонтированного через фиктивный контейнер (docker-compose v1), на именованный том (docker-compose v3).После создания именованного тома я закрываю docker-сервис и вручную копирую файлы со старого тома на новый.Это было протестировано с небольшими объемами данных, и это работает, так что, похоже, это не проблема с фактическими перемещающимися данными во внутреннем / var / lib / docker-domain.Я также могу воссоздать эту проблему с новой установкой, где я копирую прилично большой объем данных.
Сборка контейнера с compose отлично работает:
myservice:
build: myservice
restart: always
ports:
- "8080:8080"
volumes:
- type: volume
source: repo
target: /home/repo
volumes:
repo:
Том репо, содержащий том с большим количеством данных.Теперь, когда я пытаюсь запустить сервисы, я получаю тайм-аут, и сервис застревает в «Создано»:
ERROR: for my-servce-new_exp_1 HTTPSConnectionPool(host='xxxx.xx.xxx.xxx', port=2376): Read timed out. (read timeout=60)
ERROR: for exp HTTPSConnectionPool(host='xxx.xx.xxx.xxx', port=2376): Read timed out. (read timeout=60)
ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
Я пытался увеличить тайм-аут, но что-то я получаю другой тайм-аутчерез некоторое время.
Теперь, если я перезапускаю docker-сервис или хост сейчас, сервис запускается и работает (но при таком способе возникают проблемы с внутренним dns-отображением между сервисами)
Если я добавляю сервис с пустым / небольшим томом, он работает как положено.
Из любопытства я обнаружил, что, возможно, что-то освобождается при попытке монтировать тот же том в докер-контейнер:
docker run -it --rm --name rmytest --volume my-service-new_repo:/data ubuntu:latest
Время ожидания истечет, например, через 30 минут.
Если я, с другой стороны, добавлю какой-либо параметр к параметру консистенции отображения тома, он будет запущен в паресекунд:
docker run -it --rm --name rmytest --volume my-service-new_repo:/data:consistent ubuntu:latest
Не удалось добавить те же параметры к файлам компоновки, например,
volumes:
- type: volume
source: repo
target: /home/repo
consistency: delegated
Дает те же результаты;тайм-аут и не работает.Любая помощь и указатели в правильном направлении будет высоко ценится.