情况:
我已经将现有的代码从gitlab克隆到我的本地机器上。然后我做了:
docker-compose -f env/docker-compose.base.yml -f env/dev/docker-compose.yml up -d然后我有了一个带有标签local的新图像。
然后更改Dockerfile中的一些内容,然后将代码推送到gitlab。然后我删除了这个图像:
docker rmi -f image_hash然后,第一个重新构建新映像的命令:
docker-compose -f env/docker-compose.base.yml -f env/dev/docker-compose.yml up -d然后我有了标签local的新图像。(而不是latest,但为什么?)
然后我想推一下这个图像。是我推的。然后在Amazon中,我看到了带有“本地”标签的图像。:/
我真的很困惑,你们是如何处理这个版本化坞映像流的?
我在临时服务器中有一个脚本,它使用:latest来获取新的映像。
发布于 2017-12-19 18:18:31
不幸的是,你对码头组合的使用从根本上讲是错误的。
因此,首先要做的事情是: Docker被用作部署服务、卷、网络等堆栈的开发工具,这样任何个人都可以进入并旋转使用应用程序所需的环境。
这是唯一的目标-是的,当然-它可以“构建一个图像”,如果您有一个build节在您的撰写文件;但是,它实际上只用于然后立即运行该映像。我想您可以这样构建,然后通过标记重命名您的图像--但这不是正确的过程。
其次,如果您只想要,那么就会为您的撰写文件构建映像--您想要使用docker-compose build;这将按照指定的指令进行构建--但是不会运行它。
现在-实际回答您的问题;您希望使用命令docker build和docker tag来完成您的任务。
假设您的本地路径中有一个Dockerfile,您将运行:
docker build -t my_image_name .这将立即用latest标记它。标签是completely arbitrary -它非常类似于一个Git标签,除了Git标签不能被覆盖而不重写历史。我还应该指出,使用最新版本的是不好的实践。为什么?因为你不知道你在部署什么--如果你总是引用最新的,当你去更新你的服务时,它会发现一个你没有想到的新的最新的--你可能会遇到麻烦。
现在,latest被用作缺省值--但是您可以通过以下方式轻松地给它取一个名称:
docker build -t my_image_name:my_tag .最后--如果您想重命名该标记(如果您选择,可以在这里用my_tag替换latest ),那么它是任意的,除非它是默认的。您还可以创建一个完全不同的图像名称,如果您愿意的话。
码头标签my_image_name:my_tag my_new_name:latest。
希望这能为你扫清一切!
https://stackoverflow.com/questions/47890793
复制相似问题