The Difference between Docker ARG and ENV
Ubuntu: 18.04
Docker: 19.03
在 Docker 的使用過程中,很多人會分不出 ARG
與 ENV
的使用時機,導致混用時 Dockerfile
中的參數看起來角色定位都不太明確。
這其中的差別如果以圖來表示的話,就會清楚多了。
(圖片來源: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
-
jQuery
-
PHP
- Laravel
- Lumen
- ZendFramework
- Python
- Mac
-
Network
- Cisco
- DLink
- Juniper
- Oauth
-
Server
- Apache
- Share
-
Unix
- FreeBSD
- Linux
-
WebDesign
- Bootstrap
- CSS
- HTML
- Wordpress