如何捕捉build筑docker形象的变化?
我是docker集装箱新手。 我遇到了一个关于如何捕捉我的代码更改的问题。 我的本地style.css文件中的一些行已被更改。 然后我再次构build了docker镜像,但是当我浏览我的应用程序时实际上并没有改变。
以下是我在网上find的一些方法,并尝试过,但没有奏效。
- 删除图像并重新构build
- –nocaching=真
- 在Dockerfile中添加注释使其不同
- docker系统修剪
- – 拉
(我也用git pull来获取我的云实例上的代码,这些文件被检查为最新的。)
我对docker机制知之甚less,谁能告诉我这个问题是什么?
额外信息我发现:
停止容器并删除图像后,我重新启动我的实例,然后build立图像,再次运行容器。 只有这样,我才能抓住这些变化。 有谁知道这个问题?
非常感谢!
一个容器和一个图像之间的区别看起来是脱节的。 容器是应用程序的运行实例。 它基于您已经build立的图像。 该图像有一个标签,更容易引用,但真正的图像引用是sha256哈希和build立一个新的形象将改变标签指向的散列,而不会影响任何运行的容器。
因此,在Docker中更新正在运行的应用程序的工作stream程是:
- build立一个新的形象
- 停止正在运行的容器
- 开始一个新的容器指向该图像
- 清理旧图像或停止的容器
如果您使用的是docker-compose,它会使用docker-compose docker-compose up
命令自动执行中间两步,甚至删除旧的容器。 大多数用户保留旧图像的几个副本,以便轻松回滚。