小编Tal*_*eno的帖子

操作方法:Dockerfile 层重用/参考

我想创建一些图像,其中每个 dockerfile 将包含一些公共层。所有图像都是混合的,没有一致的序列。例如,有些需要在它们上面安装 java,我想将以下几行(取自官方 java 8 dockerfile)定义为将在其他 dockerfile 中引用的构建块(层)。

在某些情况下,我想要重用的层可能不止一层——使这个需求本质上是递归的(由构建块构成的构建块)。

RUN \
    echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
    add-apt-repository -y ppa:webupd8team/java && \
    apt-get update && \
    apt-get install -y oracle-java8-installer && \
    rm -rf /var/lib/apt/lists/* && \
    rm -rf /var/cache/oracle-jdk8-installer
Run Code Online (Sandbox Code Playgroud)

现在 Docker 支持吗?以这种方式单独安装例如 Java 作为一个层是一个好习惯......还是我应该将它与其他安装合并(以保持图像最小)?请问这种情况下的最佳实践是什么?

============ 更新 ==============

似乎不支持引用/包含的功能。但我仍然不确定最佳实践......

@Sri 在下面指出了最佳实践:https ://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run

在哪里鼓励对所有软件包安装使用“RUN apt-get update && apt-get install -y”。

但这是否也意味着不鼓励我们为不同的包使用不同的层?像下面的例子:

RUN apt-get update && apt-get install -y package-foo
RUN apt-get update && apt-get install -y …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

6
推荐指数
1
解决办法
2907
查看次数

没有自我标识符的F#Val

只是好奇F#为什么: member val Foo = ... with get, set 省略自我标识符(例如this.).这仍然是一个实例属性.也许我是唯一一个在使用它时感到困惑的人.但只是打扰我,足以查询谁知道语言是如何定义的.

f#

3
推荐指数
1
解决办法
390
查看次数

标签 统计

docker ×1

dockerfile ×1

f# ×1