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
搜尋關鍵字:
相关文章