首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编辑Docker镜像?

如何编辑Docker镜像?
EN

Stack Overflow用户
提问于 2019-06-12 04:29:06
回答 2查看 904关注 0票数 1

我在社区里做了一个基本的搜索,找不到合适的答案,所以我在这里问。如果之前有人问我,我很抱歉。

基本上,我正在做一个特定的项目,我们会定期更改代码。因此,我们每次都需要构建docker镜像,因为我们需要从头开始从requirement.txt安装依赖项,每次大约需要10分钟。

如何对docker镜像执行直接更改,以及如何配置入口点(在Docker File中)以反映预先构建的docker镜像中的更改

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 04:37:34

一旦构建了镜像,就不能对其进行编辑。您总是从头开始运行docker build;它总是在干净的环境中运行。

另一方面,Docker缓存构建的镜像。如果您有图像01234567,运行RUN pip install -r requirements.txt,并输出图像2468ace0,那么下次运行docker build时,它将看到相同的源图像和相同的命令,并且跳过所做的工作,直接跳到输出图像。更改的COPYADD文件将使缓存在以后的步骤中失效。

所以标准模式是

代码语言:javascript
复制
FROM node:10 # arbitrary choice of language

WORKDIR /app

# Copy in _only_ the requirements and package lock files
COPY package.json yarn.lock ./
# Install dependencies (once)
RUN yarn install

# Copy in the rest of the application and build it
COPY src/ src/
RUN yarn build

# Standard application metadata
EXPOSE 3000
CMD ["yarn", "start"]

如果您只更改了src树中的某些内容,docker build将跳到COPY步骤,因为package.jsonyarn.lock文件没有更改。

票数 1
EN

Stack Overflow用户

发布于 2021-05-04 18:08:09

在我的例子中,我面对的是同样的情况,经过微小的改变,我一次又一次地构建图像。

我的旧DockerFile

代码语言:javascript
复制
FROM python:3.8.0

WORKDIR /app

# Install system libraries
RUN apt-get update && \
    apt-get install -y git && \
    apt-get install -y gcc

# Install project dependencies
COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt --use-deprecated=legacy-resolver

# Don't use terminal buffering, print all to stdout / err right away
ENV PYTHONUNBUFFERED 1

COPY . .

所以我所做的,首先像这样创建了一个基础图像文件(避免了最后一行,没有复制我的代码)

代码语言:javascript
复制
FROM python:3.8.0

WORKDIR /app

# Install system libraries
RUN apt-get update && \
    apt-get install -y git && \
    apt-get install -y gcc

# Install project dependencies
COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt --use-deprecated=legacy-resolver

# Don't use terminal buffering, print all to stdout / err right away
ENV PYTHONUNBUFFERED 1

然后使用以下命令构建此映像

代码语言:javascript
复制
docker build -t my_base_img:latest -f base_dockerfile .

然后是最终的文档文件

代码语言:javascript
复制
FROM my_base_img:latest 

WORKDIR /app

COPY . .

从这个图像开始,我无法启动容器,复制的python代码出现了问题,所以你可以编辑图像/容器代码,来修复容器中的问题,通过这种方式,我避免了一次又一次构建图像的任务。

当我的代码被修复后,我将更改从容器复制到我的代码库,最后,我创建了最终的图像。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56551276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档