Время ожидания команды Docker Compose up часто

#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 . Моя версия docker 18.09.0, build 4d60db4 и версия docker-compose 1.23.1, build b02f1306 . Я также обновил подробности по этому вопросу.

3. Это как-то связано с сетью. У нас также есть та же проблема, и она возникает только для контейнеров, которые связаны вместе с внутренней сетью nat. Иногда даже весь Windows Server выходит из строя из-за этого и требует перезапуска. К сожалению, сейчас у меня нет решения для этого, просто отметив, что ваша проблема, вероятно, такая же, как у меня, и связана с сетью. Прямо сейчас я пытаюсь установить depends_on таким образом, чтобы каждый сетевой контейнер запускался последовательно, а не параллельно. У меня было такое наблюдение, что когда они выравниваются таким образом, это работает тогда. Но это еще предстоит проверить.

Ответ №1:

Ссылки — это устаревшая функция. Вместо этого попробуйте использовать пользовательские сети в соответствии с документами:

https://docs.docker.com/compose/compose-file/#links

Комментарии:

1. Спасибо за совет. Однако тайм-ауты по-прежнему возникают даже после использования depends_on вместо ссылок.