docker-合成运行旧图像
docker-compose running old image
我遇到了 docker-compose 最令人沮丧的问题:
我将新图像推送到 gitlab,运行 docker 在服务器上合成,然后..旧图像 运行s.
- 我已经重启了docker
- 我已经清理了所有东西(所有图像和所有容器)
- 我已经完成了docker-compose pull follow by up
- 我试过了docker-compose --force-recreate
- 我擦了/var/lib/docker/image
并且..我仍然得到一个包含旧图像的容器。
我什至不知道它从哪里获取图像,因为我已经用 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
中的主要代码将来自图像,只有数据将存储在命名卷中。
我遇到了 docker-compose 最令人沮丧的问题:
我将新图像推送到 gitlab,运行 docker 在服务器上合成,然后..旧图像 运行s.
- 我已经重启了docker
- 我已经清理了所有东西(所有图像和所有容器)
- 我已经完成了docker-compose pull follow by up
- 我试过了docker-compose --force-recreate
- 我擦了/var/lib/docker/image
并且..我仍然得到一个包含旧图像的容器。 我什至不知道它从哪里获取图像,因为我已经用 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
中的主要代码将来自图像,只有数据将存储在命名卷中。