Docker运行旧容器而不是我要拉的新容器(AWS)

时间:2019-12-06 18:22:09

标签: image amazon-web-services docker containers putty

我最近使用Docker将Springboot应用程序部署到了AWS。

尝试更新图片/容器我疯了。我尝试删除所有内容,已使用和未使用的容器,图像,标签等,然后再次推送所有内容。 Docker系统剪枝,docker rm,docker rmi,也使用其他帐户...它仍在运行该项目的旧版本。

这一切都表明在服务器级别发生了一些事情。我正在使用PuTTY。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

旧容器是什么意思?您是从某个版本控制中进行了一些更改,然后又未在容器上进行更新?还是只是在docker restart 我想要的容器

答案 1 :(得分:0)

这里有很多要解压的东西,所以如果您可以提供更多信息-那就很好了。但这是一个可能的共同点。

如果您使用任何AWS服务(EKS,Farget,ECS),则这些服务仅基于您为其提供的Docker映像。因此,如果您的图片未正确更新,它们将不会更新。

但是docker run也会发生相同的情况。如果您继续指向同一张图片(或者该图片在概念上未更改),则不会有任何更改。

所以我怀疑问题出在Docker或AWS内。

最有可能

  1. 您不会随着每次更改而重新构建spring应用程序二进制文件

  2. 您的Dockerfile输入了错误的二进制文件

  3. 如果使用的图像托管服务(例如ECR或Nexus),则需要确保图像名称指向正确的image:tag组合。如果更新映像,则应为其赋予唯一的标签,然后再给Docker / AWS引用的已标记的映像

构建映像后,可以使用docker export <container_id> | tar -xf - <location_of_binary_in_image_filesystem>

验证是否复制了正确的二进制文件。

那将拉出二进制文件。然后,您可以在本地运行它以测试它是否是您想要的。

您可以使用docker export <container_id> | tar -tf - | less

查看整个文件系统