Python 如何更新docker图像

Python 如何更新docker图像,python,image,docker,Python,Image,Docker,假设我有以下Python代码: #!/usr/bin/pyton3 import time while(True): print("Hello World") time.sleep(1) 使用上面的Python代码,我通过使用dockerfile创建了docker映像pythondocker。现在dockerfile包含了很多包,需要先安装这些包,然后构建映像。构建映像后,我可以轻松启动/停止容器 现在我的问题是,例如,我对Python代码做了一些更改,我想用新的更改

假设我有以下Python代码:

#!/usr/bin/pyton3

import time
while(True):
      print("Hello World")
      time.sleep(1)
使用上面的Python代码,我通过使用dockerfile创建了docker映像pythondocker。现在dockerfile包含了很多包,需要先安装这些包,然后构建映像。构建映像后,我可以轻松启动/停止容器


现在我的问题是,例如,我对Python代码做了一些更改,我想用新的更改更新docker image pythondocker。我怎样才能做到这一点。?一种方法是首先停止容器,然后删除图像并再次构建它。但是再次构建映像将需要一些时间,因为它将再次安装所有软件包。是否有任何方法可以停止映像而不是删除它,然后将更改应用到当前映像,或者可以在不安装dockerfile中提到的包/依赖项的情况下生成映像。

根据dockerfile的分层方式,您可以简单地重新生成映像而不删除它。它将尽可能使用缓存

当图层行中的文件没有更改,并且前面的图层行也没有更改时,Docker将使用缓存。因此,如果python代码位于Dockerfile的底部,那么它应该只构建这个层。这应该很快


之后,您可以再次运行映像

根据Dockerfile的分层方式,您可以简单地重新构建映像,而无需删除它。它将尽可能使用缓存

当图层行中的文件没有更改,并且前面的图层行也没有更改时,Docker将使用缓存。因此,如果python代码位于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_标记即可。。只有ADD main.py/usr/src/app下面的行将被重新安装/升级,并且当您第一次构建映像时,上面的行只安装一次。

您的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_标记即可。。只有ADD main.py/usr/src/app下面的行将被重新安装/升级,并且当您首次构建映像时,上面的行仅安装一次。

您应该使用docker compose文件构建docker映像

只需按照任何教程学习如何使用docker compose

然后,无需任何手动删除,您可以使用以下命令重新构建并重新运行所有图像

构建所有图像

构建并运行所有容器

我已经为docker列出了一些日常有用的命令,看看吧

您应该使用docker compose文件构建docker映像

只需按照任何教程学习如何使用docker compose

然后,无需任何手动删除,您可以使用以下命令重新构建并重新运行所有图像

构建所有图像

构建并运行所有容器

我已经为docker列出了一些日常有用的命令,看看吧

docker-compose up -d