11.dockerfile之ENV指令

本文详细解析了Docker中ENV指令的功能与用法,包括如何在镜像构建过程中设置环境变量,以及这些变量如何在后续的RUN指令和新构建的镜像中被使用。同时,文章还介绍了ENV定义的环境变量的限制,以及如何通过docker run命令传递环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ENV指令说明


 ENV指令用来在镜像构建过程中设置环境变量,后续的RUN可以使用它所创建的环境变量

当创建基于该镜像的container的时候,会自动拥有设置的环境变量

 

二、ENV案例


首先,编写dockerfile:

#base image
FROM centos

#MAINTAINER,this dockerfile creater
MAINTAINER loose@docker.com

#设置环境变量
ENV env variable

其次,构成镜像:

最后,进入伪交互模式,并通过env命令查询环境变量:

说明:

1.通过ENV定义的环境变量,可以被后面的所有指令中使用,比如我们构建了nginx:v1.0镜像,配置了ENV  env  123;以nginx:v1.0为基础镜像再构建一个新的镜像jdk:v1.0,那么jdk:v1.0也会拥有该环境变量:

再次创建一个镜像,以上方的eng:v1.0镜像为基础镜像:

#base image
FROM eng:v1.0

#MAINTAINER,this dockerfile creater
MAINTAINER loose@docker.com

构建一个新的镜像:

进入交互模式,然后通过env命令查询环境变量:

2.通过ENV定义的环境变量,可以在dockerfile被后面的所有指令中使用

ENV env variable
RUN mkdir $env

3.通过ENV定义的环境变量不能被CMD指令使用,也不能被docker run 的命令参数引用

4.在docker run 命令中通过 -e标记来传递环境变量,这样容器运行时就可以使用该变量:

 

转载于:https://www.cnblogs.com/Json1208/p/8974978.html

当写Dockerfile时,可以使用以下技巧来提高效率和可维护性: 1. 使用多阶段构建:在构建Docker镜像时,可以使用多个阶段以尽可能地减小镜像大小。每个阶段都可以使用不同的基础镜像,并且可以在构建过程中丢弃不必要的文件。 2. 尽可能使用官方镜像:使用官方镜像可以确保镜像的安全性和可靠性,并且通常比自己构建镜像更高效。 3.Dockerfile中使用环境变量:使用环境变量可以使Dockerfile更易于配置,并允许在容器运行时动态更改配置。 4. 通过COPY和ADD指令添加文件:使用COPY和ADD指令可以将本地文件添加到镜像中,并且可以使用通配符来添加多个文件。 5. 避免使用sudo:在Dockerfile中使用sudo可能会导致不必要的权限问题。在非root用户下使用Dockerfile时,请确保在命令前加上USER指令。 6. 使用多行语法:使用多行语法可以使Dockerfile更易于阅读和维护。例如: ``` RUN apt-get update \ && apt-get install -y \ package1 \ package2 \ package3 ``` 7. 缩小镜像大小:在构建Docker镜像时,请确保尽可能减小镜像大小。可以删除不必要的文件,使用多阶段构建,以及使用轻量级的基础镜像等方式来缩小镜像大小。 8.Dockerfile中使用ARG指令:ARG指令可以用来传递构建时的参数,以便在构建过程中动态更改Dockerfile中的值。 在使用Dockerfile构建镜像时,还应该遵循最佳实践和安全性原则,例如使用最新版本的基础镜像,避免在Dockerfile中添加敏感信息等。同时,也应该注意Dockerfile的可维护性,使其易于理解和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值