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