docker env

作者:原创时间:2022-06-08
文档

docker env是什么,让我们一起了解一下?

Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。

Dockerfile中的ENV指令用以定义镜像的环境变量。示例如下:

RUN set -ex && apt-get update && apt-get install -y iputils-ping
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
ENV TERM xterm
ENV PYTHON_VERSION 3.5.3
ENV name1=ping name2=on_ip
CMD $name1 $name2

说明:定义环境变量的同时,可以引用已经定义的环境变量。

在ENV指令中,可以直接引用如下环境变量:

HOME,用户主目录

HOSTNAME,默认容器的主机名

PATH,

TERM,默认xterm

ARG 和 ENV 可用性是什么?

在使用Docker时,我们区分了两种不同类型的变量–ARG和ENV。

ARG也被称为构建时变量。它们只在Docker文件中用ARG指令 "宣布 "的那一刻起可用,直到镜像被构建。运行中的容器不能访问ARG变量的值。这也适用于CMD和ENTRYPOINT指令,它们只是告诉容器在默认情况下应该运行什么。如果你告诉Dockerfile期待各种ARG变量(没有默认值),但在运行构建指令时却没有提供任何ARG变量,就会出现错误信息。

然而,ARG值可以在镜像建立后,通过查看镜像的docker历史,很容易被检查出来。因此,他们是敏感数据的一个糟糕选择。

ENV变量在构建过程中也是可用的,只要你用ENV指令引入它们。然而,与ARG不同的是,它们也可以被从最终镜像中启动的容器所访问。

常见的误解有什么?

1、.env 文件仅在使用docker-compose.yml 文件时的预处理步骤中使用。美元符号变量(如 $HI)被替换为同一目录中名为“.env”的文件中包含的值。

2、ARG仅在构建 Docker 映像(RUN 等)期间可用,而不是在创建映像并从其启动容器之后(ENTRYPOINT、CMD)。您可以使用 ARG 值来设置 ENV 值来解决这个问题。

3、ENV值可用于容器,但在 Docker 构建期间也可使用 RUN 样式的命令,从引入它们的行开始。

4、如果您使用 bash (RUN export VARI=5 && …) 在中间容器中设置环境变量,它将不会在下一个命令中持续存在。有办法解决这个问题。

5、env_file是一种将许多环境变量一次性传递给单个命令的便捷方式。这不应与.env文件混淆。

6、设置 ARG 和 ENV 值会在 Docker 映像中留下痕迹。不要将它们用于不打算保留的秘密

以上就是小编的分享,希望可以帮助到大家。 

显示全文
柠檬水怎么做才不苦 弄上墨水的衣服怎么洗 电脑为什么会蓝屏怎么解决 电脑刚开机就卡的动不了怎么办 电脑淘宝怎么和客服联系 衣服掉色要怎么办 电水壶如何去除水垢 怎样涂口红才最好看 word文档出现吞字怎么办啊 飞机中的氧气是哪里来的 动车站可以带红酒吗 陶渊明的古诗名句有哪些 除夕的古诗4句 兄弟友情的诗句 关于思乡的古诗小学 家庭如何泡发干海参 手机过热是怎么回事儿 买手机怎么买便宜的 一般知乎都怎么赚钱 中餐礼仪有哪些注意事项 打印WORD文档怎样选择双面打印 怎么吸引别人加我微信 携程礼品卡的钱怎么用 怎么拆太阳能玻璃管 爱奇艺怎么qq登录不了 电视机顶盒如何看卫视 魅族手机长时间不用充不进电怎么办 动车高铁可以带几条烟 苹果se的电池和苹果5s通用吗 一般的笔记本多大尺寸 电脑回收站永久删除的文件怎么恢复 刚买回来的牡丹花怎么养护 关于立冬节气的习俗 朋友圈怎么可以只发文字 手机怎么样修改qq密码 借记卡是什么卡类 立冬吃什么对身体好 qq币可以充话费吗 怎么下载腾讯视频到本地 笔记本键盘返回键失灵怎么办