如何更新泊坞窗图像

假设我有一个下面的Python代码:

#!/usr/bin/pyton3 import time while(True): print("Hello World") time.sleep(1) 

使用上面的Python代码,我使用dockerfile创build了一个docker image pythondocker。 现在,dockerfile包含了许多软件包,它们需要先安装,然后构build一个映像。 图像生成后,我可以很容易地启动/停止容器。

现在我的问题是,例如,我已经对我的Python代码做了一些改变,我想用新的更改更新pythondocker image pythondocker 。 我怎样才能做到这一点? 一种方法是停止容器,然后删除图像,并再次build立它。 但是再次构build映像需要一些时间,因为它将再次安装所有的软件包。 有没有什么办法可以停止图像,而不是删除它,然后将更改应用到当前图像,或者可以构build图像,但不安装在dockerfile中提到的包/依赖关系。

您的Dockerfile可能如下所示:

 FROM python:2 RUN apt-get install libxxx ADD requirememts.txt / RUN pip install -r /requirements.txt ADD main.py /usr/src/app WORKDIR /usr/src/app RUN pip install -r /usr/src/app/requirements.txt CMD ["python", "main.py"] 

你可以简单的运行docker build -t some_tag . 。 只有在ADD main.py /usr/src/app下面的行才会被重新安装/升级,而且上面的行只在您第一次创build映像时才安装一次。

根据你的Dockerfile的分层结构,你可以简单地构build图像(不删除它)。 它将尽可能使用caching。

当层(行)中的文件没有改变,并且前面的层(行)没有改变时,Docker将使用caching。 所以如果你的Python代码位于你的Dockerfile的底部,它应该只build立这个层。 哪个应该快。

之后,您可以再次运行您的图像。

您应该使用docker-compose文件构build您的泊坞窗图像。

只要按照任何教程如何使用docker-compose。

然后在没有任何手动删除的情况下,您可以使用以下命令重新构build并重新运行所有图像。

构build所有图像

 docker-compose build 

构build并运行所有容器

 docker-compose up -d 

我列出了一些日常有用的命令泊坞窗,看看https://rohanjmohite.wordpress.com/2017/08/04/docker-daily-useful-commands/