【发布时间】:2019-04-03 03:54:46
【问题描述】:
我是码头工人世界的新手。所以我有现有的 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脚本。这很耗时,我不想一次又一次地运行它。
我的问题:
- 如前所述,如何拆分 Dockerfile?
- 如何使用 2 个图像文件构建一个图像?
- 如何运行这两个文件?
现在我做到了:
构建并运行:docker build -t "test" . && docker run -it "test"
只需构建:docker build -t "test" .
快跑:docker run -it "test"
【问题讨论】:
标签: docker docker-image docker-build docker-run