gpt4 book ai didi

docker - 相同的 Dockerfile 在构建过程中给出不同的结果

转载 作者:行者123 更新时间:2023-12-02 20:00:04 25 4
gpt4 key购买 nike

我正在重构一个角度应用程序以从 VM 架构切换到 Docker 容器。
在为 Angular 构建容器时,我想出了一个 Dockerfile,用作多阶段构建中的构建器。我在我的 Mac 上工作就像一个魅力,所以我把它推到我们公司的 github 上供我的同事使用。
当一位同事从 repo 中提取并尝试在他的 Mac 上构建时,问题就出现了(不同的型号,但或多或​​少具有可比性,我的是 2015 年,他的是 2016 年,两者都运行 Mojave)。
这是错误的 dockerfile 的内容:

# base image
FROM node:9.6.1 as builder

# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository -y ppa:fontforge/fontforge
RUN apt-get install -y google-chrome-stable
RUN apt-get install -y fontforge ttfautohint gettext

我假设它在我的笔记本电脑上构建得很好,但是当他尝试启动构建时,他在步骤 RUN apt-get update 中收到了一些错误。
容器在尝试更新 systemd 并退出时收到 404。
我们还尝试从同一图像中启动一个新容器 docker run --rm -it node:9.6.1 /bin/bash并在命令行中手动复制粘贴所有指令,效果很好。
1. 为什么在两台非常相似但仍然不同的机器上出现两种不同的结果?
docker 容器的重点应该是抽象环境并为您的应用程序创建独立环境,那么为什么相同的 Dockerfile 蓝图在我的机器上完美运行,而在他的机器上却不行呢?
此外,docker 恶魔运行良好,它启动了容器,我们遇到的问题是在容器构建内的系统升级期间。
2. 为什么在同一台机器上,Dockerfile 构建失败,而手动运行相同的步骤成功?
这完全让我大吃一惊,我什至可以理解两台不同机器的问题,但我找不到任何合乎逻辑的解释:提供给命令行的相同命令可以工作,而如果通过脚本执行则不会。

最佳答案

apt-get update ,特别是会产生随时间变化的结果。其中包括 Debian 软件包的 URL,标准的 Debian 软件包管理实践是在有更新版本时立即从存储库列表中删除一个软件包。

如果您之前通过 RUN apt-get update 运行 Dockerfile ,然后更改了安装的特定软件包,您可能会处于 Docker 缓存更新操作结果的状态,但它们不再有效。

通常的答案是确保运行 apt-get update && apt-get install在一个 RUN步:

RUN apt-get update \
&& apt-get install -y software-properties-common
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
RUN add-apt-repository -y ppa:fontforge/fontforge
RUN apt-get update \
&& apt-get install -y google-chrome-stable fontforge ttfautohint gettext

关于docker - 相同的 Dockerfile 在构建过程中给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54463580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com