The Difference between Docker ARG and ENV

Ubuntu: 18.04

Docker: 19.03

在 Docker 的使用过程中,很多人会分不出 ARGENV 的使用时机,导致混用时 Dockerfile 中的参数看起来角色定位都不太明确。

这其中的差别如果以图来表示的话,就会清楚多了。

An overview of ARG and ENV availability.

(图片来源:vsupalov.com)

Name Description
ARG 只能使用在 build image 的过程之中,较常用来做 build image 的变数控制。
ENV 顾名思义,用来设定系统环境的参数。

ARG

Dockerfile

# 宣告 ARG 参数
ARG VERSION="latest"

FROM node:${VERSION}

# 在 FROM 执行完之后,如果要使用 ARG 参数还需要再宣告一次
# 不然会找不到参数
ARG VERSION
RUN echo ${VERSION}

使用上除了 Dockerfile 之外,也可以透过 --build-arg 控制想要的参数。

docker build --build-arg VERSION=15.2.1 -t johnsonlu/test --no-cache .

ENV

Dockerfile

FROM node:15.2.1

# 宣告 ENV 变数
ENV LOG_PATH=/var/log
RUN echo ${LOG_PATH}

也可以在执行 Container 时以 -e 代入。

docker run -it -e LOG_PATH=/home/log johnsonlu/test /bin/bash
Categories: Docker
Tags: Docker

分类
  • Android
  • AngularJS
  • API Blueprint
  • Chrome
  • Database
    • MySQL
  • DataStructure
  • Docker
  • Editor
    • Vim
  • Firefox
  • Git
  • GitLab
  • Google API
  • Hadoop
  • HTTP
  • Language
    • Go
    • Java
    • JavaScript
      • jQuery
        • jQueryChart
      • Node.js
      • Vue
        • Vue-CLI
    • PHP
      • Laravel
      • Lumen
      • ZendFramework
    • Python
  • Mac
  • Network
    • Cisco
    • DLink
    • Juniper
  • Oauth
  • Server
    • Apache
  • Share
  • Unix
    • FreeBSD
    • Linux
  • WebDesign
    • Bootstrap
    • CSS
    • HTML
    • Wordpress
Search
搜寻关键字:
相关文章