更新泊坞窗图像给予本地文件系统的变化

我正在试图解决在更改用于创build泊坞窗图像的本地文件系统时如何更新现有图像。 我以为我可以使用docker提交来做到这一点,但似乎允许您在运行的图像上的文件系统发生更改时更改图像?

/app.py 

从文件系统build立

  sudo docker build -t app 

现在对/app.py进行了本地更改。 如何更改图像应用程序以反映对/app.py的更改? 现在我不得不删除旧的图像,然后创build一个新的。

 sudo docker rmi app sudo docker build -t app 

任何帮助表示赞赏!

首先,没有running image ,只有running container 。 图像是以Docker的方式交付的东西,你build立你的image ,然后从它开始一个container

对于你的问题,我想你已经提到了你的select:

  1. 重build你的形象
  2. 进入正在运行的容器,进行更改,然后docker commitdocker commit回去。 就个人而言,我只用这种方式来解决一个小问题,或者如果docker build需要很长时间,我的图像修补程序。

Docker使用union FS来创build图像,这意味着如果您想对图像进行更改,则无法在原地进行更改,它会创build额外的图层来反映您的更改(s)在某些情况下,它只会使用相同的图像名称。 从交付的angular度来看,我认为为每个版本构build一个新的映像(使用不同的标签)是完全可以的,甚至可以这样做,这就是为什么你有一个Dockerfile ,并且映像不仅仅是你开始的东西你的容器,他们实际上是版本化的交付工件,你可以回滚到任何版本,如果你想/需要。 所以我认为你现在的解决scheme是可以的。

这里/app.py几句话:对于本地开发和testing,你可以将/app.py作为一个卷挂载到你的容器当你启动它,像docker run -v /path/to/host/app.py:/path/to/container/app.py your_base_image_to_run_app ,然后你在本地的FS更改为app.py ,它会反映到容器。 当你完成你的工作,build立一个新的形象。

根据您当前的devise解决scheme是创build新的图像并分配相同的标签。

最好的解决scheme是从Docker镜像暴露环境variables,并使用这些variables来更新app.py,这样就不需要每次都更改图像。只有一个镜像就足够了。