#docker #docker-compose #docker-for-windows
#docker #docker-compose #docker-для-Windows
Вопрос:
Я использую Docker для Windows, и у меня есть набор образов, которые уже созданы на моем хосте docker. Когда я пытаюсь использовать docker-compose up -d
команду для запуска своей среды, я часто сталкиваюсь с ошибками тайм-аута ввода-вывода для разных контейнеров. Обычно помогает повторная попытка, но я пытаюсь автоматизировать это и не могу ожидать повторного запуска всего конвейера.
Версии:
Docker version 18.09.0, build 4d60db4
docker-compose version 1.23.1, build b02f1306
Журналы командной строки:
C:workspaceAK_DOCKER_RISKdocker-compose>docker-compose up -d
Creating risk-svc ...
Creating risk-svc ... done
Creating risk-prc ...
Creating risk-web ...
Creating risk-web ... error
ERROR: for risk-web b'i/o timeout'
Creating risk-prc ... done
ERROR: for web b'i/o timeout'
Encountered errors while bringing up the project.
Ошибка наблюдается случайным образом, иногда для svc, web или prc.
Может кто-нибудь объяснить, почему возникает эта ошибка и, что более важно, как решить эту проблему?
Это мой файл docker-compose.yml:
version: '3'
services:
web:
image: iis-core-web:1910.252
build:
context: .
dockerfile: ./web/Dockerfile
container_name: risk-web
ports:
- "9111:8080"
tty: true
links:
- svc
volumes:
- ../RiskLogs/web:c:/RiskLogs
svc:
image: iis-core-svc:1910.252
build:
context: .
dockerfile: ./svc/Dockerfile
container_name: risk-svc
ports:
- "9112:8080"
tty: true
volumes:
- ../RiskLogs/svc:c:/RiskLogs
prc:
image: iis-core-prc:1910.252
build:
context: .
dockerfile: ./prc/Dockerfile
container_name: risk-prc
tty: true
links:
- svc
volumes:
- ../RiskLogs/prc:c:/RiskLogs
# prevent creation of new network and use existing nat
networks:
default:
external:
name: nat
Комментарии:
1. вы должны определить
image:
илиbuild:
не комбинировать их, в рабочем docker-compose лучше использовать image:. Я также считаюlinks
, что она устарела и должна быть замененаdepends_on
Какой у вас версией docker и docker-compose?2. @MazelTov, спасибо за совет по использованию
depends_on
. Я бы хотел сохранить как изображение, так и опцию сборки для гибкости использования-build
аргумента вместеdocker-compose up
. Моя версия docker18.09.0, build 4d60db4
и версия docker-compose1.23.1, build b02f1306
. Я также обновил подробности по этому вопросу.3. Это как-то связано с сетью. У нас также есть та же проблема, и она возникает только для контейнеров, которые связаны вместе с внутренней сетью nat. Иногда даже весь Windows Server выходит из строя из-за этого и требует перезапуска. К сожалению, сейчас у меня нет решения для этого, просто отметив, что ваша проблема, вероятно, такая же, как у меня, и связана с сетью. Прямо сейчас я пытаюсь установить depends_on таким образом, чтобы каждый сетевой контейнер запускался последовательно, а не параллельно. У меня было такое наблюдение, что когда они выравниваются таким образом, это работает тогда. Но это еще предстоит проверить.
Ответ №1:
Ссылки — это устаревшая функция. Вместо этого попробуйте использовать пользовательские сети в соответствии с документами:
Комментарии:
1. Спасибо за совет. Однако тайм-ауты по-прежнему возникают даже после использования depends_on вместо ссылок.