Docker Compose up 命令经常超时

3
我正在使用Docker For Windows,已经在我的docker主机上构建了一组镜像。当我尝试使用docker-compose up -d命令启动我的环境时,我经常会遇到不同容器的i/o超时错误。通常情况下,重试可以解决问题,但我正在尝试自动化此过程,并不能指望重新运行整个流水线。
版本信息: Docker version 18.09.0, build 4d60db4 docker-compose version 1.23.1, build b02f1306 命令行日志:
C:\workspace\AK_DOCKER_RISK\docker-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

2
你应该定义 image: 或者 build: 而不是混合使用它们,在生产环境的 docker-compose 中最好使用 image:。我还认为 links 已经过时,应该被 depends_on 替换。你的 docker 和 docker-compose 版本是多少? - Mazel Tov
@MazelTov,感谢您建议使用depends_on。我想保留图像和构建选项,以便可以使用docker-compose up命令的-build参数进行灵活操作。我的Docker版本是18.09.0, build 4d60db4,docker-compose版本是1.23.1, build b02f1306。我还更新了问题的详细信息。 - KatariaA
1
这与网络有关。我们也遇到了完全相同的问题,它只会发生在与内部NAT网络绑定在一起的容器中。有时甚至整个Windows服务器都会因此崩溃并需要重新启动。不幸的是,我现在没有解决方案,只是注意到你的问题可能与我的相同,并且与网络有关。现在我正在尝试以这样的方式设置depends_on,使得每个网络化的容器按顺序启动,而不是并行启动。我观察到当它们以这种方式对齐时,它就可以工作。但这还有待检查。 - Vir
1个回答

0

2
谢谢您的建议。然而,即使使用 depends_on 而不是 links,超时仍然会发生。 - KatariaA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接