我是docker world的新手。所以我有一个现成的Dockerfile,如下所示:
# Base image
FROM <OS_IMAGE>
# Install dependencies
RUN zypper --gpg-auto-import-keys ref -s && \
zypper -n install git net-tools libnuma1
# Create temp user
RUN useradd -ms /bin/bash userapp
# Creating all the required folders that is required for installment.
RUN mkdir -p /home/folder1/
RUN mkdir -p /home/folder2/
RUN sudo pip install --upgrade pip
RUN python3 code_which_takes_time.py
# Many more stuff below this.
因此code_which_takes_time.py
需要花一些时间才能运行,这会下载并执行许多内容。
因此,要求是每当我们在RUN python3 code_which_takes_time.py
下添加更多语句时,将不需要在构建映像时每次执行此python脚本。
因此,我想将此映像分为2个Dockerfile。
因为如果我为当前文件运行docker build -t "test" .
,它将再次执行我的python脚本。这很耗时,我不想一次又一次地运行它。
我的问题:
到目前为止,我可以:
构建并运行:docker build -t "test" . && docker run -it "test"
只需构建:docker build -t "test" .
只需运行:docker run -it "test"
答案 0 :(得分:0)
在阅读完该方案后,我可以建议的一件事是,您想将工作流拆分为两个Dockerfile,据我所知,您可以轻松地将它们拆分。
维护您的第一个Dockerfile,该文件将通过执行您的python代码 colorbar
colormap jet; %gradient from blue to red
来构建映像,并提交名称为“ Root_image” 的映像。
之后,如果您想在该“ Root_image” 中添加其他任务,例如xticks([-pi -pi/2 0 pi/2 pi])
xticklabels({'-\pi','-\pi/2','0','\pi/2','2\pi'})
等,只需创建一个新的Dockerfile并在该Dockerfile中使用code_which_takes_time.py
即可完成您的工作想做的。完成任务后,提交您的工作并将其命名为“ Child_image” ,最终您的子图像就是从该“ Root_image” 继承的图像。