ARG命令
ARG命令用于定义一个变量,这个变量可以在构建镜像时传递给Docker构建器。具体来说,ARG命令的作用和使用方式如下:
定义构建参数:
ARG <varname>[=<default value>]<varname>
是变量名,<default value>
是可选的默认值。如果构建镜像时没有传递该变量的值,则使用默认值。传递构建参数: 在运行
docker build
命令时,可以通过--build-arg
选项来传递构建参数:docker build --build-arg <varname>=<value> -t <image_name> .其中
<varname>
是之前定义的变量名,<value>
是你想传递的值。覆盖参数值:
如果在Dockerfile中定义了同名的ARG变量,则命令行传递的值会覆盖Dockerfile中定义的默认值。 例如:
在构建时使用ARG VERSION=1.0--build-arg VERSION=2.0
会将版本号从1.0
改为2.0
。变量使用范围:
ARG变量在镜像构建过程中有效,但在容器运行时不可用。 例如,可以在RUN指令中使用ARG变量: ARG VERSION
RUN echo $VERSION未定义的构建参数:
如果用户在构建时传递了未在Dockerfile中定义的构建参数,构建过程会发出警告,但不会出错。 例如: docker build --build-arg UNDEFINED_VAR=value -t image_name .安全性建议:
不建议使用ARG命令传递敏感信息,如GitHub密钥、密码等,因为这些值在构建历史记录中是可见的。 ARG和ENV的关系:
可以通过ARG来定义ENV指令的默认值。ENV指令设置的环境变量在镜像构建后和容器运行时均可用。 例如: ARG APP_VERSION=1.0
ENV VERSION=$APP_VERSION在构建镜像时可以使用 --build-arg APP_VERSION=2.0
来覆盖默认值。
配合使用参数
FROM
解释:指定基础镜像。 例子:
这行代码指定了一个基于Ubuntu 20.04的基础镜像。FROM ubuntu:20.04MAINTAINER
解释:指定维护者信息,已经过时,可以使用LABEL maintainer= 来替代。 例子: LABEL maintainer="example@example.com"RUN
解释:运行命令。 例子:
这行代码更新了包列表并安装了nginx。RUN apt-get update && apt-get install -y nginxCMD
解释:指定启动容器时默认的命令。 例子:
这行代码在启动容器时运行nginx。CMD ["nginx", "-g", "daemon off;"]ENTRYPOINT
解释:指定镜像的默认入口。运行命令。 例子:
这两行代码设置python为入口点,并运行ENTRYPOINT ["python"]
CMD ["app.py"]python app.py
。EXPOSE
解释:声明镜像内服务监听的端口。 例子:
这行代码声明容器内应用将会监听80端口。EXPOSE 80ENV
解释:指定环境变量,可以在docker run的时候使用-e改变;会被固化到image的config里面。 例子:
这行代码设置环境变量ENV APP_ENV=productionAPP_ENV
为production
。ADD
解释:复制指定的src路径下的内容到镜像中的dest路径下,src可以为url会自动下载,可以为tar文件,会自动解压。 例子:
这行代码从URL下载文件并解压到ADD https://example.com/file.tar.gz /tmp//tmp/
目录下。COPY
解释:复制本地主机的src路径下的内容到镜像中的dest路径下,但不会自动解压等。 例子:
这行代码将本地当前目录的所有文件复制到镜像的COPY . /app/app
目录。LABEL
解释:指定生成镜像的元数据标签信息。 例子: LABEL version="1.0"
LABEL description="This is an example image"VOLUME
解释:创建数据卷挂载点。 例子:
这行代码创建一个数据卷并挂载到VOLUME ["/data"]/data
目录。USER
解释:指定运行容器时的用户名或UID。 例子:
这行代码设置容器内的默认用户为USER appuserappuser
。WORKDIR
解释:配置工作目录,为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。 例子:
这行代码将工作目录设置为WORKDIR /app/app
。ARG
解释:指定镜像构建使用的参数(如版本号等),可以在build的时候,使用--build-args改变。 例子:
这行代码设置构建参数ARG VERSION=1.0
RUN echo $VERSIONVERSION
为1.0
,并在构建过程中使用该参数。
文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




