Docker 从入门到实践 0.9.0(2017-12-31)macOS Windows PC 镜像加速器 使用镜像 获取镜像 列出镜像 删除本地镜像 利用 commit 理解镜像构成 使用 Dockerfile 定制镜像 Dockerfile 指令详解 COPY 复制文件 ADD 更高级的复制文件 CMD 容器启动命令 ENTRYPOINT 入口点 ENV 设置环境变量 2 1.7.6.6 1.7.6.7 1.7.6.8 1 config 相关内容 增加 LinuxKit 相关内容 更新 CoreOS 章节 更新 etcd 章节,基于 3.x 版本 删除 Docker Compose 中的 links 指令 替换 docker daemon 命令为 dockerd 替换 docker ps 命令为 docker container ls 替换 docker images 命令为 及的无法重复的问题、镜像构建透明性的问 题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层, 因此每一条指令的内容,就是描述该层应当如何构建。 还以之前定制 nginx 镜像为例,这次我们使用 Dockerfile 来定制。 在一个空白目录中,建立一个文本文件,并命名为0 码力 | 370 页 | 6.73 MB | 1 年前3
Docker 从入门到实践 0.412. 安全 i. 内核名字空间 ii. 控制组 iii. 服务端防护 iv. 内核能力机制 v. 其它安全特性 vi. 总结 13. Dockerfile i. 基本结构 ii. 指令 iii. 创建镜像 14. 底层实现 i. 基本架构 ii. 名字空间 iii. 控制组 iv. 联合文件系统 v. 容器格式 vi. 网络 15. Docker Compose docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令。 新建一个目录和一个 Dockerfile $ mkdir sinatra $ cd sinatra $ touch Dockerfile Dockerfile 中每一条指令都创建镜像的一层,例如: # This is a comment FROM ubuntu:14.04 MAINTAINER install ruby ruby-dev RUN gem install sinatra Dockerfile 基本的语法是 使用 # 来注释 FROM 指令告诉 Docker 使用哪个镜像作为基础 接着是维护者的信息 RUN 开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件 编写完成 Dockerfile 后可以使用 docker build0 码力 | 179 页 | 2.27 MB | 1 年前3
OpenShift Container Platform 4.2 镜像重复利用镜 镜像 像 建议您尽可能使用 FROM 语句将您的镜像基于适用的上游镜像。这可确保,在上游镜像更新时您的镜像 也可轻松从中获取安全修复,而不必再直接更新依赖项。 此外,请使用 FROM 指令中的标签(如 rhel:rhel7),方便用户准确了解您的镜像基于哪个版本的镜像。 使用除 latest 以外的标签可确保您的镜像不受 latest 版上游镜像重大更改的影响。 在 在标签 标签内 另外,在单个 RUN 语句中执行多个命令可减少镜像中的层数,缩短下载和提取时间。 按正确 按正确顺 顺序放置指令 序放置指令 容器构建程序读取 Dockerfile,并自上而下运行指令。成功执行的每个指令都会创建一个层,可在下次构 建该镜像或其他镜像时重复使用。务必要将极少变化的指令放置在 Dockerfile 的顶部。这样做可确保下 次构建相同镜像会非常迅速,因为缓存不会因为上层变化而失效。 操作都会导致 RUN 层缓存无 效,因此 yum 操作也必须要重新运行。 标记 标记重要端口 重要端口 EXPOSE 指令使主机系统和其它容器可使用容器中的端口。尽管可以指定应当通过 podman run 调用来 公开端口,但在 Dockerfile 中使用 EXPOSE 指令可显式声明您的软件需要运行的端口,让用户和软件更 易于使用您的镜像: OpenShift Container Platform0 码力 | 92 页 | 971.35 KB | 1 年前3
OpenShift Container Platform 4.14 镜像重复利用 重复利用镜 镜像 像 您的镜像尽可能使用 FROM 语句基于适当的上游镜像。这可确保,在上游镜像更新时您的镜像也可轻松 从中获取安全修复,而不必再直接更新依赖项。 此外,请使用 FROM 指令中的标签(如 rhel:rhel7),方便用户准确了解您的镜像基于哪个版本的镜像。 使用除 latest 以外的标签可确保您的镜像不受 latest 版上游镜像重大更改的影响。 在 在标签 标签内 另外,在单个 RUN 语句中执行多个命令可减少镜像中的层数,缩短下载和提取时间。 按正确 按正确顺 顺序放置指令 序放置指令 容器构建程序读取 Dockerfile,并自上而下运行指令。成功执行的每个指令都会创建一个层,可在下次构 建该镜像或其他镜像时重复使用。务必要将很少更改的指令放置在 Dockerfile 的顶部。这样做可确保下 次构建相同镜像会非常迅速,因为缓存不会因为上层变化而失效。 操作都会导致 RUN 层缓存无 效,因此 yum 操作也必须要重新运行。 标记 标记重要端口 重要端口 EXPOSE 指令使主机系统和其它容器可使用容器中的端口。尽管可以指定应当通过 podman run 调用来 公开端口,但在 Dockerfile 中使用 EXPOSE 指令可显式声明您的软件需要运行的端口,让用户和软件更 易于使用您的镜像: 公开端口显示在 podman ps 下,与从您的镜像创建的容器关联。0 码力 | 118 页 | 1.13 MB | 1 年前3
OpenShift Container Platform 4.4 构建(build)id_rsa 文件将复制到源代码所在的目录中。在 OpenShift Container Platform S2I 构建器镜像中,这是镜像的工作目录,使用 Dockerfile 中的 WORKDIR 指令设置。如果要 指定其他目录,请在定义中添加 destinationDir: 您还可以指定创建新 BuildConfig 对象时的目标目录: $ oc new-build \ opensh 它们将为空。 assemble 脚本完成后不会截断输入 ConfigMap。 3.6.3. Docker 策略 采用 Docker 策略时,您可以使用 Dockerfile 中的 ADD 和 COPY 指令,将所有定义的输入 secret 添加 到容器镜像中。 如果没有为 secret 指定 destinationDir,则文件将复制到 Dockerfile 所在的同一目录中。如果将一个相 对路径指定为 jar .s2i/bin/run 文件 文件 #!/bin/sh exec java -jar app.jar 对于 Docker 构建策略,您必须修改 Dockerfile 并通过 RUN 指令调用 shell 命令: OpenShift Container Platform 4.4 构 构建( 建(build) ) 22 1 2 3 Dockerfile 摘 摘录 FROM0 码力 | 101 页 | 1.12 MB | 1 年前3
OpenShift Container Platform 4.13 CI/CDid_rsa 文件将复制到源代码所在的目录中。在 OpenShift Container Platform S2I 构建器镜像中,这是镜像的工作目录,使用 Dockerfile 中的 WORKDIR 指令设置。如果要 指定其他目录,请在定义中添加 destinationDir: 您还可以指定创建新 BuildConfig 对象时的目标目录: apiVersion: core/v1 kind: Secret 它们将为空。 assemble 脚本完成后不会截断输入配置映射。 2.3.6.6. Docker 策略 策略 采用 docker 策略时,您可以使用 Dockerfile 中的 ADD 和 COPY 指令,将所有定义的输入 secret 添加到 容器镜像中。 如果没有为 secret 指定 destinationDir,则文件将复制到 Dockerfile 所在的同一目录中。如果将一个相 对路径指定为 脚本中放入适当的 shell 命令: .s2i/bin/assemble 文件 文件 .s2i/bin/run 文件 文件 对于 Docker 构建策略,您必须修改 Dockerfile 并通过 RUN 指令 调用 shell 命令: Dockerfile 摘 摘录 录 #!/bin/sh APP_VERSION=1.0 wget http://repository.example.com/app/app-$APP_VERSION0 码力 | 129 页 | 1.37 MB | 1 年前3
OpenShift Container Platform 4.7 镜像镜像 像 4.1. 学习容器最佳实践 4.1.1. 常规容器镜像准则 重复利用镜像 在标签内维持兼任性 避免多进程 在 wrapper 脚本中使用 exec 清理临时文件 按正确顺序放置指令 6 6 6 6 6 6 7 7 7 8 8 8 8 8 9 10 10 10 11 11 11 11 12 12 13 13 14 14 15 16 16 16 17 17 中使用,在创建容器镜像时都需要遵循以下指导信 息。 重复利用镜像 您的镜像尽可能使用 FROM 语句基于适当的上游镜像。这可确保,在上游镜像更新时您的镜像也可轻松 从中获取安全修复,而不必再直接更新依赖项。 此外,请使用 FROM 指令中的标签(如 rhel:rhel7),方便用户准确了解您的镜像基于哪个版本的镜像。 使用除 latest 以外的标签可确保您的镜像不受 latest 版上游镜像重大更改的影响。 在标签内维持兼任性 件最终写入层中。 另外,在单个 RUN 语句中执行多个命令可减少镜像中的层数,缩短下载和提取时间。 按正确顺序放置指令 容器构建程序读取 Dockerfile,并自上而下运行指令。成功执行的每个指令都会创建一个层,可在下次构 建该镜像或其他镜像时重复使用。务必要将很少更改的指令放置在 Dockerfile 的顶部。这样做可确保下 次构建相同镜像会非常迅速,因为缓存不会因为上层变化而失效。 例如:如果您正在使用0 码力 | 123 页 | 1.20 MB | 1 年前3
OpenShift Container Platform 4.6 发行注记改进 进了 了COPY 和 和 ADD 构 构建 建说 说明 明 OpenShift Container Platform 构建中的 COPY 和 ADD 指令的性能有所提高。与 docker 相比,buildah 中的 COPY 和 ADD 指令的初始实施性能明显下降。在这个版本中,构建可以更快地运行,特别是使用大 型源存储库。(BZ#1833328) Operator SDK v0.19.4 OpenShift 使用 ARG 指令,在 Dockerfile 的 第一个 FROM 指令发生前定义构建参数,则在处理 Dockerfile 时会丢弃该指令,以纳入 Build 或 BuildConfig 资源中指定的任何覆盖。在使用预处理的 Dockerfile 构建镜像时,对这些参数的 引用不会正确解决。预处理逻辑已被修改,以保留生成更新的 Dockerfile 内容时遇到的第一个 FROM 指令前遇到的 ARG ARG 指令,因此不再出现这个问题。(BZ#1842982) 在以前的版本中,Buildah 会清除镜像上的镜像架构和 OS 字段。这会导致通用容器工具失败,因 为生成的镜像无法识别其架构和操作系统。此程序错误修复可防止 Buildah 覆盖镜像和架构,除 非有显式覆盖。这样可确保镜像始终具有架构和操作系统字段,且不会出现镜像不匹配警告。 (BZ#1858779) 在以前的版本中,Dockerfile0 码力 | 91 页 | 1.15 MB | 1 年前3
OpenShift Container Platform 4.7 安装字符串 compute 组成计算节点的机器的配置。 MachinePool 对象的数组。详情请查 看以下"Machine-pool"表。 compute.architecture 决定池中机器的指令集合架构。目前不 支持异构集群,因此所有池都必须指定 相同的架构。有效值为 amd64 (默认 值)。 字符串 compute.hyperthread ing 是否在计算机器上启用或禁用并发多线 control plane 的机器的配置。 MachinePool 对象的数组。详情请查 看以下"Machine-pool"表。 controlPlane.architec ture 决定池中机器的指令集合架构。目前不 支持异构集群,因此所有池都必须指定 相同的架构。有效值为 amd64 (默认 值)。 字符串 controlPlane.hyperth reading 是否在 control machineNetwork: - cidr: 10.0.0.0/16 第 第 4 章 章 在 在 AWS 上安装 上安装 133 compute.architecture 决定池中机器的指令集合架构。目前不 支持异构集群,因此所有池都必须指定 相同的架构。有效值为 amd64 (默认 值)。 字符串 compute.hyperthread ing 是否在计算机器上启用或禁用并发多线0 码力 | 2276 页 | 23.68 MB | 1 年前3
OpenShift Container Platform 4.12 专用硬件和驱动程序启用/run/secrets/some-kubernetes-secret 的构建环 境中获取。 可选:避免使用此参数。如果设置为 true,则允许构建使用普通 HTTP 在 Dockerfile FROM 指令中 拉取镜像。 dockerfileConfigMap: 12 name:sign: 13 14 15 16 17 18 19 20 21 22 23 可选:避免使用此参数。如果设置为 true,构建将在使用普通 HTTP 在 Dockerfile FROM 指令中拉 取镜像时跳过任何 TLS 服务器证书验证。 必需。 必需:包含带有密钥"证书"的公钥的 secret。 必需:包含带有密钥"密钥"的私有 secureboot 密钥的 secret。 可选:避免使用此参数。如果设置为 的形式挂载到构建 Pod 中。 可选:避免使用此参数。如果设置为 true,则允许构建使用普通 HTTP 在 Dockerfile FROM 指令中 拉取镜像。 可选:避免使用此参数。如果设置为 true,构建将在使用普通 HTTP 在 Dockerfile FROM 指令中拉 取镜像时跳过任何 TLS 服务器证书验证。 必需。 可选:避免使用此参数。如果设置为 true,则允许 KMM 检查容器镜像是否已使用普通 0 码力 | 54 页 | 591.48 KB | 1 年前3
共 42 条
- 1
- 2
- 3
- 4
- 5













