天道酬勤,学无止境

如何使用Dockerfile for Windows image的ARG指令(How to use the ARG instruction of Dockerfile for Windows image)

问题

我想在我的 dockerfile 中传递一个参数来构建我的 docker 镜像。 我在其他帖子和 docker 手册中看到过如何执行此操作,但在我的情况下不起作用。 这是我使用参数的代码摘录:

ARG FirefoxVersion
RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install -y firefox --version $FirefoxVersion --ignore-checksums

我在 powershellPrompt 中使用此命令构建我的图像:

docker build -t myimage --build-arg FirefoxVersion=61.0.1 .

最后我有这个错误:

 '$FirefoxVersion' is not a valid version string.
 Parameter name: version
 The command 'cmd /S /C choco install -y firefox --version $FirefoxVersion  -- ignore-checksums' returned a non-zero code: 1

有人知道我的代码有什么问题吗? 谢谢。

回答1

正如@matt9 建议的那样

在 powershell 中使用$env:FirefoxVersion

在 cmd.exe 中使用%FirefoxVersion%

FROM microsoft/windowsservercore:ltsc2016
ARG FirefoxVersion
#if using powershell
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
RUN Write-Host Powershell: $env:FirefoxVersion
#if using CMD
SHELL ["cmd", "/S", "/C"]
RUN echo cmd.exe: %FirefoxVersion%

构建: docker build -t myimage --build-arg FirefoxVersion=61.0.1 .

结果

Powershell: 61.0.1
cmd.exe: 61.0.1
回答2

(这个答案是我评论的正式版本。)

尝试使用%FirefoxVersion%

ARG FirefoxVersion
RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install -y firefox --version %FirefoxVersion% --ignore-checksums

原因:

错误消息“命令'cmd /S /C choco install ...' 返回非零代码:1”表示choco install命令是在cmd.exe(Windows 的命令提示符)上执行的。 Dockerfile 的ARG值可以视为环境变量。 在 cmd.exe 上, %...%代表 env var。

回答3

只是为了添加@Andy Joiner的回答:

我无法让$env:<arg name>工作,关键是在SHELL命令之后移动ARG声明。

回答4

像这样尝试:

传递像${FirefoxVersion}这样的参数

ARG FirefoxVersion
RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install -y firefox --version ${FirefoxVersion} --ignore-checksums

构建泊坞窗图像:

docker build -t --build-arg FirefoxVersion=61.0.1 myimage .

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 【docker】Dockerfile文件常用指令详解
    Dockerfile简介 ​ Dockerfile是一个用来构建镜像的文本文档,它包含用户在命令行上可以调用的能被用来组装镜像的所有命令。Docker可以通过读取Dockerfile中的指令来自动构建图像(使用docker build命令,用户可以创建一个连续执行多个命令行指令的自动构建)。 常见模板 # 使用From指令指定基础镜像可以为hub中的镜像也可以为私有仓库的镜像(ACR、Harbor) From nginx:latest # 使用MAINTAINER指令描述维护者信息 MAINTAINER yuhua <your contact info> # 镜像操作指令 把“./”(当前目录)下的所有文件拷贝到容器内的“/abc”目录 COPY ./ /abc # 指定RUN、ENTRYPOINT、CMD指令的工作目录(容器内) WORKDIR /abc # 使用RUN指令,指定执行"npm install"命令 RUN npm install # 对容器外暴露8080端口 EXPOSE 8080 # 容器启动时执行的指令 指定容器启动时执行“node bin/run”命令,启动node应用 ENTRYPOINT ["node","bin/run"] 常用指令 指令概述备注ADD添加指令,将源文件或者目录添加到指定路径下。镜像操作指令。具有自动解压功能ARG用于变量传递
  • Docker-制作镜像-基于Dockerfile制作镜像
    Dockerfile介绍 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。 FROM 基于的镜像 MAINTAINER 作者信息 COPY ADD WORKDIR VOLUME EXPOSE ENV RUN CMD ENTRYPOINT HEALTHCHECK ONBUILD USER ARG SHELL STOPSIGNAL Dockerfile 编写的基本结构 Dockerfile 一般分为四部分: (1)基础镜像信息 (2)维护者信息 (3)镜像操作指令 (4)容器启动时执行指令 ’#’ 为Dockerfile 中的注释。 docker build 格式: docker build [OPTIONS] PATH | URL | - ** 选项:** -t:打标签 -c,- cpu-shares int :CPU份额(相对权重) -m,- memory bytes:内存限制 –build-arg:设置构建时变量,就是构建的时候修改ARG指令的参数 From 指令 1、FROM 指令必须是 Dockerfile 中非注释行的第一个指令 2、FROM 指令用于为镜像文件构建过程指定基础镜像,后续的指令运行于此基础镜像所提供的运行环境; 3、实践中
  • 初识Docker---基础入门三
    六、用Dockerfile创建镜像 Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义的镜像。本节主要介绍Dockerfile经典的基本结构和支持的众多命令,并具体的讲解通过这些指令来编写制定镜像的Dockerfile,以及如何生成镜像。 6.1 基本结构 Dockerfile一般由一行命令组成,并且支持以#开头的注释行。 一般而言,Dockerfile分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。例如: # This Dockerfile uses the centos image # VERSION 2 - EDITION 1 # Author: docker_user # Command format : Instruction [arguments / command] .. # Base image to use, this must be set as the first line FROM centos # Maintainer: docker_user docker_user@email.com MAINTAINER docker_user docker_user@email.com # Commands to update the image RUN echo "deb http:/
  • Dockerfile指令含义及使用案例简书
    Dockerfile指令 我们已经看过了一些Dockerfile中可用的指令,如RUN和EXPOSE。但是,实际上还可以在Dockerfile中放入很多其他指令,这些指令包括CMD、ENTRYPOINT、ADD、COPY、VOLUME、WORKDIR、USER、ONBUILD、LABEL、STOPSIGNAL、ARG和ENV等。可以在http://docs.docker.com/ reference /builder/查看Dockerfile中可以使用的全部指令的清单。 1.CMD CMD指令用于指定一个容器启动时要运行的命令。这有点儿类似于RUN指令,只是RUN指令是指定镜像被构建时要运行的命令,而CMD是指定容器被启动时要运行的命令。这和使用docker run命令启动容器时指定要运行的命令非常类似,比如代码清单4-45所示。 代码清单4-45 指定要运行的特定命令 $ sudo docker run -i -t jamtur01/static_web /bin/true 可以认为代码清单4-45所示的命令和在Dockerfile中使用代码清单4-46所示的CMD指令是等效的。 代码清单4-46 使用CMD指令 CMD ["/bin/true"] 当然也可以为要运行的命令指定参数,如代码清单4-47所示。 代码清单4-47 给CMD指令传递参数 CMD ["/bin/bash"
  • 通过Dockerfile构建Docker镜像
    Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式。可以通过docker build命令利用Dockerfile构建镜像。Dockerfile提供了一系列统一的资源配置语法指令,开发人员可以根据需求定制Dockerfile,然后使用这份Dockerfile文件进行自动化镜像构建,简化了构建镜像的复杂过程,同时Dockerfile与镜像配合使用,使Docker在构建时可以充分利用镜像的功能进行缓存,大大提升了Docker的使用效率。 本文主要对Dockerfile指令和使用Dockerfile构建镜像进行简单总结。 一、Dockerfile基本结构 Dockerfile由一行行命令语句组成,支持以#开头的注释行。一般Dockerfile主体分为基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令四个部分。下面是从Docker Hub上拿来的nginx的一个Dockerfile的例子,可以对Dockerfile的基本结构有个大体的了解,我们在编写自己的Dockerfile时也可以参考Docker Hub上优秀镜像的Dockerfile,通过优秀镜像的Dockerfile来学习和总结经验来编写高效的Dockerfile文件。 # 指定所构建镜像的基础镜像 FROM debian:buster-slim # 指定生成镜像的元数据标签信息 LABEL
  • Elastic Beanstalk 和 Dockerfile ARG 指令(Elastic Beanstalk and Dockerfile ARG instruction)
    问题 我需要将一些参数传递给我的docker build命令。 我知道这可以使用Dockerfile的ARG指令来完成。 现在假设我的Dockerfile有以下Dockerfile 。 ARG myvar 并使用命令docker build --build-arg mvar=myOwnVar ... ,这会起作用。 但是,我将AWS Elastic Beanstalk与Docker来构建映像并将其部署在容器中。 所以问题是, 这可能吗? 如果是,我如何确保 AWS EB 将值传递给这些参数? 谢谢苏希尔 回答1 昨天我开始使用 AWS EB,我很高兴,今天我需要将一些 ARG 传递给我的构建,在文档中找到了这个 很伤心 来源:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html 解决方法 一个可能的解决方案是我目前正在做的事情,在运行 docker build 之前,将一些文件添加到 EB 并从 Dockerfile 中使用它 例如,让我们假设我的TOKEN上需要一个 var 名称TOKEN ,例如 RUN curl http://somemething.com?token=$TOKEN 所以我所做的是 添加一个新的脚本文件 ADD ./curl-thing.sh
  • Dockerfile FROM指令 语法解析
      凡是编写Dockerfile,几乎开始都会是FROM命令,它决定了Dockerfile构建出的镜像为何物,本文就来了解一下FROM的语法、语义以及对应的示例。   语法 FROM [--platform=<platform>] <image> [AS <name>] FROM [--platform=<platform>] <image>[:<tag>] [AS <name>] FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]   语义   1. FROM指令开始一个新的构建阶段,设置后续构建依赖的基础镜像,Dockerfile必须以FROM开始。镜像可以是任意有效镜像。   示例:在nginx:latest镜像基础上,直接创建一个新的镜像。 FROM nginx CMD /bin/bash   2. Dockerfile必须以FROM指令开始(除ARG指令之外),否则会出现"Please provide a source image with from prior to commit"。 CMD echo "Before FROM" FROM nginx CMD /bin/bash   3. FROM可以在一个Dockerfile中出现多次,以创建多个镜像或者将当前构建作为另一个构建的依赖。   4
  • (精华)2020年10月3日 微服务 Docker详解
    1、Docker版本 17.03版本之后 1、CE(Community Edition: 社区版) ---- 免费 2、EE(Enterprise Edition: 企业版)---- 收费 2、windows 安装 条件 1、windows 10 2、开启Hyper-V 3、安装Toolbox 最新版 Toolbox 下载地址: https://www.docker.com/get-docker 点击 Download Desktop and Take a Tutorial,并下载 Windows 的版本 3、linux安装 1、centos7.0 以上的版本 2、安装docker 版本仓库 docker版本 2.1 设置仓库 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2.2 稳定仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 3、安装docker(默认安装最新版本) sudo yum install docker-ce docker-ce-cli containerd.io 如果要安装其他版本 要安装特定版本的 Docker Engine
  • Dockerfile
    Dockerfile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 指令 COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径 COPY [--chown=<user>:<group>] <源路径1>... <目标路径> COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"] ADD:ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下: ADD的优点:在于在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径> ADD的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同: CMD 在docker run 时运行。 RUN 是在 docker build。ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。 语法:ENTRYPOINT ["<executeable>","<param1
  • 使用Dockerfile定制自己的docker镜像
    我们都知道,在Linux系统下可以通过shell脚本来自动安装部署应用,这样不但免去了手动操作的麻烦,而且还可以通过一些自动化工具来实现批量安装部署。那么docker是否也可以通过脚本的方式定制镜像呢?当然可以,那就是Dockerfile,我们可以把创建应用镜像的操作都写入一个Dockerfile文件里,然后通过docker build命令来构建自已的镜像,这个过程类似shell脚本的功能。docker环境的安装部署可以参考我的另一篇博文《Centos 7部署docker环境、基本命令使用及简单实战》,https://blog.51cto.com/andyxu/2174652 本文的所有操作都是基于这个环境执行的。在使用dockerfile之前,我们先来看一个简单的例子:实例1:查看本机公网IP地址 docker pull ubuntu mkdir -p dockerfile/myip 创建Dockerfile文件vim dockerfile/myip/Dockerfile FROM ubuntu:latest #基于ubuntu:latest镜像来构建新的镜像 MAINTAINER xuad #描述镜像的作者信息 ARG APT=apt-get #临时变量,只有在执行docker build命令构建容器时有效 RUN $APT update \ #构建容器时执行的命令 &&
  • Docker,一个或多个未使用的构建参数(Docker, one or more build-args where not consumed)
    问题 我正在尝试使用自定义环境变量构建 Oracle WebLogic Docker 映像 $ docker build -t 12213-domain --build-arg ADMIN_PORT=8888 --build-arg ADMIN_PASSWORD=wls . 但我在构建日志中收到以下警告 [Warning] One or more build-args [ADMIN_PASSWORD ADMIN_PORT] were not consumed 这是我正在尝试构建的图像的 Dockerfile #Copyright (c) 2014-2017 Oracle and/or its affiliates. All rights reserved. # #Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl. # # ORACLE DOCKERFILES PROJECT # -------------------------- # This Dockerfile extends the Oracle WebLogic image by creating a sample domain. # # Util scripts are
  • Dockerfile文件说明
    阅读目录 什么是dockerfile?Dockerfile的基本结构Dockerfile文件说明 回到顶部 什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。 例: docker build -f /path/to/a/Dockerfile 回到顶部 Dockerfile的基本结构 Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。 回到顶部 Dockerfile文件说明 Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。 在这里列出了一些常用的指令。 FROM:指定基础镜像,必须为第一个命令 格式:   FROM <image>   FROM <image>:<tag>   FROM <image>@<digest> 示例:
  • How to use the ARG instruction of Dockerfile for Windows image
    I would like to pass an argument in my dockerfile to build my docker image. I've seen in other post and docker manual how to do this but it doesn't work in my case. Here is an extract of my code where i use my argument: ARG FirefoxVersion RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')); RUN choco install -y firefox --version $FirefoxVersion --ignore-checksums I build my image with this command in powershellPrompt : docker build -t myimage --build-arg FirefoxVersion=61.0.1 . Finally I have this error : '$FirefoxVersion' is not a
  • 如何在 docker 中构建期间设置环境变量(How do I set environment variables during the build in docker)
    问题 我试图在构建期间在 docker 容器中设置环境变量,但没有成功。 使用 run 命令时设置它们有效,但我需要在构建期间设置它们。 文件 FROM ubuntu:latest ARG TEST_ENV=something 我用来构建的命令 docker build -t --build-arg TEST_ENV="test" myimage . 跑步 docker run -dit myimage 我正在通过使用检查可用的环境变量 docker exec containerid printenv 结果是 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=e49c1abfd58b TERM=xterm no_proxy=*.local, 169.254/16 HOME=/root TEST_ENV 不存在 回答1 ARG用于设置在docker build过程中使用的环境变量 - 它们不存在于最终图像中,这就是为什么您在使用docker run时看不到它们的原因。 您将ARG用于仅在构建映像时相关的设置,并且您从该映像运行的容器不需要这些设置。 您可以将ENV用于在构建期间和容器中使用的环境变量。 使用这个 Dockerfile: FROM ubuntu ARG BUILD
  • 如何防止缓存 Dockerfile 指令?(How can I prevent a Dockerfile instruction from being cached?)
    问题 在我的Dockerfile我使用curl或ADD下载最新版本的存档,例如: FROM debian:jessie ... RUN apt-get install -y curl ... RUN curl -sL http://example.com/latest/archive.tar.gz --output archive.tar.gz ... ADD http://example.com/latest/archive2.tar.gz ... 使用curl或ADD的RUN语句创建自己的图像层。 这将用作未来执行docker build的缓存。 问题:如何禁用该指令的缓存? 在那里获得诸如缓存失效之类的东西会很棒。 例如,通过使用 HTTP ETag 或通过查询最后修改的标头字段。 这将提供基于 HTTP 标头进行快速检查以决定是否可以使用缓存层的可能性。 我知道一些肮脏的技巧可能会有所帮助,例如在RUN语句中执行下载 shell 脚本。 它的文件名将在我们的构建系统触发docker build之前更改。 我可以在该脚本中进行 HTTP 检查。 但随后我需要将上次使用的ETag或上次修改的文件存储在某处。 我想知道这里是否有一些我可以使用的更干净和原生的Docker 功能。 回答1 可以指定构建时参数以从该步骤开始强制中断缓存。 例如,在您的 Dockerfile 中,放置
  • dockerfile指令和dockerfile文件示例基本介绍
    文章目录 dockerfile 指令简单 dockerfile 示例 dockerfile 指令 FROM 必须为 dockerfile 首个命令,表示基于什么镜像去制作 LABEL 主要写一写作者联系方式之类的声明 USER 表示运行容器时候使用的用户名或 UID,默认使用 root 用户(如果用一些别的用户,去 RUN 安装软件的时候可能就安装不了) RUN dockerfile 中的核心部分,用来创建镜像,可以有多条 RUN 命令都是基于 FROM 基础镜像的,每个 RUN 会形成一个基础镜像层 WORKDIR 指明运行命令是在哪个目录下(这个目录都是针对于 docker 容器中的目录来说的),为 RUN CMD ENTRYPOINT ADD 这些指令配置工作目录 ENV 容器启动的环境变量 ARG 构建环境的环境变量 COPY 复制文件(从本机拷贝到容器,先写本机目录,后面容器目录写点就表示 WORKDIR 这个目录) CMD 容器运行时执行的默认命令 ENTRYPOINT 指定容器的入口 HEALTHCHECK 容器健康状态检查 简单 dockerfile 示例 # 基于这个镜像,build 时会自动去找这个镜像 FROM 镜像名:版本 # 标签信息 LABEL maintainer="自己的邮箱" # docker 容器启动后的环境变量,启动容器后进入就可以看到这个变量
  • Dockerfile和docker-compose解析
    文章目录 基础概念Dockerfile文件详解什么是Dockerfile?Dockerfile的基本结构Dockerfile文件说明 从Dockerfile 构建镜像docker-compose文件及命令docker-compose文件docker-compose常用命令: 基础概念 先简单理解 docker 的使用过程,它分为镜像构建与容器启动。 镜像构建: 即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。 容器启动: 容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。 1)针对单个容器,这可以通过 docker run 来运行。 2)而如果涉及多个容器的运行(如服务编排)就可以通过 docker-compose 来实现,它可以轻松的将多个容器作为 service 来运行(当然也可仅运行其中的某个),并且提供了 scale (服务扩容) 的功能。 3)例如,你有一个php镜像,一个mysql镜像,一个nginx镜像。如果没有docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。而用了docker-composer之后,你就可以把这些命令一次性写在docker
  • Dockerfile命令简述
    什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。 Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。 可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。 一、FROM和RUN 指令的作用 执行时机:都在docker build时执行 FROM:定制的镜像都是基于 FROM 的镜像 , 为了指定基本映像,第一条指令必须是FROM。 RUN:用于执行后面跟着的命令行命令。有以下俩种格式: shell 格式: RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。 exec 格式: RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline 注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层
  • Centos在线安装Docker及其常用命令详解
    Centos在线安装Docker 架构一、Docker安装1. 安装环境2. 下载Dcoker依的赖环境3. 指定Docker镜像源4. 更新yum软件包索引5. 安装Docker CE6. 启动Docker7. 查看是否启动成功8. 查看Docker版本9. 设置开机自动启动10. 设置Docker的中央仓库 二. 镜像的操作1. 查找镜像2. 拉取镜像3. 查看本地全部镜像4. 删除本地镜像5. 镜像的导入导出6. 镜像标签7. 构建镜像 三. 容器的操作1. 运行容器2. 查看正在运行的容器3. 查看容器日志4. 进入容器的内部5. 复制内容到容器6. 重启&启动&停止&删除容器7. 导出和导入容器 四、Docker应用1. Nginx安装2. Mysql安装3. Tomcat安装4. 部署java工程 五、数据卷1. 创建数据卷2. 查看全部数据卷3. 查看数据卷详情4. 删除指定数据卷5. 删除指定数据卷 六、Dockerfile自定义镜像1、什么是 Dockerfile?2、使用 Dockerfile 定制镜像2.1、创建Dockerfiler2.2、FROM 和 RUN 指令的作用2.3、开始构建镜像2.3.1、上下文路径 3、指令详解3.1、COPY3.2、ADD3.3、CMD3.4、ENTRYPOINT3.5、ENV3.6、ARG3.7、VOLUME3.8
  • Docker — Dockerfile command
    什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 使用 Dockerfile 定制镜像 这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,这里你只要知道构建的流程即可。 1、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件) 在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容: FROM nginx RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html 2、FROM 和 RUN 指令的作用 FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。 RUN:用于执行后面跟着的命令行命令。有以下俩种格式: shell 格式: RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。 exec 格式: RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test