docker-合成运行旧图像

docker-compose running old image

我遇到了 docker-compose 最令人沮丧的问题:

我将新图像推送到 gitlab,运行 docker 在服务器上合成,然后..旧图像 运行s.

并且..我仍然得到一个包含旧图像的容器。 我什至不知道它从哪里获取图像,因为我已经用 docker rmi...

擦除它们

现在,如果我执行 docker 运行 gitlabimagepath,新图像 运行s 正确。 因此,在同一台计算机上,问题特别发生在 docker-compose 上,而不是 docker.

docker-compose pull 正在获取具有正确摘要的图像。 当我 运行 它与 docker-compose 并得到旧图像时,或者我 运行 与 docker 运行,检查给出相同的图像 sha256。所以看起来有一些旧容器一直在为 docker-compose 复活并且永远不会重建

我想不出比 'what the hell?'

更好的问题了

这个类似问题 没有任何帮助。

docker 撰写非常基础:

version: '3.3'

services:
  leech:
    container_name: services_leech
    image: registry.gitlab.com/...:latest
    restart: unless-stopped
    volumes:
      - volume-leech:/app
    networks:
      - default

volumes:
  volume-leech:

networks:
  default:
    external:
      name: leech-network

所以,一个永久存储卷,就是这样。

当您声明要在 /app 上挂载的命名卷时:

volumes:
  - volume-leech:/app

应用程序代码及其本地数据都存储在卷中。 Docker 无法区分它们,因此即使更新了底层图像,卷中较旧的代码也会优先。

如果您可以重新配置或重组您的应用程序以将其数据存储在其他地方,您可以将 Docker 设置更改为

volumes:
  - volume-leech:/app/data

然后/app中的主要代码将来自图像,只有数据将存储在命名卷中。