如何更新docker镜像

问题描述 投票:1回答:3

假设我有一个以下Python代码:

#!/usr/bin/pyton3

import time
while(True):
      print("Hello World")
      time.sleep(1)

使用上面的Python代码,我使用dockerfile创建了一个docker镜像pythondocker。现在dockerfile包含许多需要先安装然后构建映像的软件包。构建映像后,我可以轻松启动/停止容器。

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

python image docker
3个回答
3
投票

您的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以下的行,并且在第一次构建图像​​时,上面的行只安装一次。


1
投票

根据Dockerfile的分层方式,您可以再次构建图像​​(不删除它)。它将尽可能使用缓存。

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

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


1
投票

您应该使用docker-compose文件构建docker镜像。

只需按照任何教程了解如何使用docker-compose。

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

构建所有图像

docker-compose build

构建并运行所有容器

docker-compose up -d

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

© www.soinside.com 2019 - 2024. All rights reserved.