运行 Docker 父图像和父图像之上的基础图像
Running Docker Parent image and Base image on top of parent image
我是 docker 世界的新人。所以我现有的 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 个 Dockerfiles。
- 一个文件你只能运行一次。此文件将包含耗时的内容,在构建图像时可能 运行 只需要一次。
- 第二个将用于添加更多语句,这些语句将作为更多层添加到现有图像之上。
因为如果我对当前文件运行docker build -t "test" .
,它会一次又一次的执行我的python脚本。这很耗时,我不想 运行 一次又一次。
我的问题:
- 如何像我上面提到的那样分割Dockerfile?
- 如何使用 2 个图像文件构建图像。?
- 如何运行这两个文件?
截至目前,我是这样的:
构建和 运行:docker build -t "test" . && docker run -it "test"
刚刚构建:docker build -t "test" .
只是 运行 : docker run -it "test"
阅读场景后我可以建议的一件事是,您想将工作流程拆分为两个 Dockerfile,据我所知,您可以轻松地破坏它们。
维护您的第一个 Dockerfile,它将使用您的 python 代码 code_which_takes_time.py
执行构建一个镜像,提交该镜像并命名为 "Root_image" .
之后,当您想在 "Root_image" 中添加其他任务时,例如 RUN python3
等,只需创建一个新的 Dockerfile 并在该 Dockerfile 中使用 FROM Root_image
并在其中做您想做的事情。完成你的任务后提交你的工作并将其命名为 "Child_image",最终你的子图像是从 "Root_image"[=21 继承的图像=].
我是 docker 世界的新人。所以我现有的 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 个 Dockerfiles。
- 一个文件你只能运行一次。此文件将包含耗时的内容,在构建图像时可能 运行 只需要一次。
- 第二个将用于添加更多语句,这些语句将作为更多层添加到现有图像之上。
因为如果我对当前文件运行docker build -t "test" .
,它会一次又一次的执行我的python脚本。这很耗时,我不想 运行 一次又一次。
我的问题:
- 如何像我上面提到的那样分割Dockerfile?
- 如何使用 2 个图像文件构建图像。?
- 如何运行这两个文件?
截至目前,我是这样的:
构建和 运行:docker build -t "test" . && docker run -it "test"
刚刚构建:docker build -t "test" .
只是 运行 : docker run -it "test"
阅读场景后我可以建议的一件事是,您想将工作流程拆分为两个 Dockerfile,据我所知,您可以轻松地破坏它们。
维护您的第一个 Dockerfile,它将使用您的 python 代码 code_which_takes_time.py
执行构建一个镜像,提交该镜像并命名为 "Root_image" .
之后,当您想在 "Root_image" 中添加其他任务时,例如 RUN python3
等,只需创建一个新的 Dockerfile 并在该 Dockerfile 中使用 FROM Root_image
并在其中做您想做的事情。完成你的任务后提交你的工作并将其命名为 "Child_image",最终你的子图像是从 "Root_image"[=21 继承的图像=].