【发布时间】:2019-05-07 22:24:15
【问题描述】:
我有一个 docker-compose.yml 文件,它从 docker hub 获取图像 svka4019/notes2:latest。 但是,如果我更改图像构建它并推送它,当我运行 docker-compose 时,它只会使用它之前已经下载的那个。 这是 docker-compose.yml:
springboot-docker-compose-app-container:
image: svka4019/notes2:latest
ports:
- "80:5001"
depends_on:
- friendservice
networks:
- mynet
container_name: base_notes
friendservice:
build: ./Pirmas
command: python app.py
ports:
- 5000:5000
container_name: friend
networks:
- mynet
networks:
mynet:
还有我用于构建和运行的命令:docker-compose up --build -d。
为了更新 docker-hub 中的图像,我使用:
docker build -t svka4019/notes2
docker push svka4019/notes2
如果我将方法用作无缓存,它只会重建friendService 容器并跳过基础容器。
【问题讨论】:
-
可以尝试使用 docker image rm image_name 删除镜像
-
latest非常混乱。它只是一个字符串,没有任何特定的功能。把它想象成foo。即使您正在重建映像,当 docker-compose 运行时,它也会查找x:latest,在本地找到它(不检查它是否与发布到注册表的内容不同)并继续。更好的方法可能是在修改版本时更改标签,或者更好地使用图像清单 (sha256:....),因为这明确引用了图像的唯一版本,并且(很可能)每次更改图像时都会更改。 -
@DazWilkin 你能举个例子来说明如何使用清单而不是 image:tag 吗?
-
docker push ...[[username]]/[[repo]]:[[tag]],如果成功,输出[[tag]]: digest: sha256:[digest]] size: [[size]。其他注册表(dockerhub 的 UI 似乎不提供此功能)允许您列出存储库|图像的摘要。使用 dockerhub,要检索摘要值,您需要例如docker pull [[username]]/[[repo]]:[[tag]],如果成功,它将报告Digest: sha256:[[digest]]。[[digest]](32 个十六进制字符 == 256 位)是您需要的值。您在[[repo]]之后引用它[[username]]/[[repo]]@sha256:[[digest]]NB@而不是:。
标签: docker docker-compose dockerhub