当前位置: 首页 > news >正文

企业网站开发技术题库网站建设与管理就业前景

企业网站开发技术题库,网站建设与管理就业前景,上海住房和城乡建设委员会官方网站,菜单宣传网站怎么做文章目录 环境总结测试测试1测试2测试3测试4测试5测试6 参考 环境 RHEL 9.3Docker Community 24.0.7 总结 如果懒得看测试的详细信息,可以直接看结果: 一条 ENV 指令可以定义多个环境变量。Dockerfile里可以包含多条 ENV 指令。环境变量的值不需要用…

文章目录

  • 环境
  • 总结
  • 测试
    • 测试1
    • 测试2
    • 测试3
    • 测试4
    • 测试5
    • 测试6
  • 参考

环境

  • RHEL 9.3
  • Docker Community 24.0.7

总结

如果懒得看测试的详细信息,可以直接看结果:

  • 一条 ENV 指令可以定义多个环境变量。
  • Dockerfile里可以包含多条 ENV 指令。
  • 环境变量的值不需要用双引号引起来,如果用了双引号,也会自动被去掉。
  • 环境变量的值如果包含空格,可以用双引号引起来,或者用 \ 将其转义。
  • 环境变量的值如果包含双引号,可以用 \ 将其转义。
  • ENV 指令里可以引用之前的 ENV 指令里定义的环境变量。
  • 在同一条 ENV 指令里,无法互相引用:
    • 如果是本条指令里新定义的变量,则当作没有定义。
    • 如果是之前指令里定义过,本条指令里有修改的变量,则获取的仍然是之前指令里的值。
  • 在启动容器时,可以通过 --env 选项覆盖Dockerfile里设置的环境变量。
  • stage会继承其parent image的环境变量。
  • 如果只是构建期的变量,不要用 ENV 指令,否则会影响image使用。
  • 如果想要unset变量,需要把set和unset放到同一个 RUN 指令里。

测试

测试1

创建 Dockerfile 文件如下:

FROM alpineENV VAR1=value1 VAR2="value2" VAR3="hello world" \VAR4=hello\ world ENV VAR5="He said: \"It's good!\""

构建:

docker build -t kai0108_1 .

启动容器,查看环境变量:

➜  ~ docker run kai0108_1 env
VAR1=value1
VAR2=value2
VAR3=hello world
VAR4=hello world
VAR5=He said: "It's good!"

注:只列出了相关的环境变量。

总结:

  • 一条 ENV 指令可以定义多个环境变量。
  • Dockerfile里可以包含多条 ENV 指令。
  • 环境变量的值不需要用双引号引起来,如果用了双引号,也会自动被去掉。
  • 环境变量的值如果包含空格,可以用双引号引起来,或者用 \ 将其转义。
  • 环境变量的值如果包含双引号,可以用 \ 将其转义。

测试2

创建 Dockerfile 文件如下:

FROM alpineENV VAR1=value1 VAR2=aaa${VAR1}bbbENV VAR3=ccc${VAR1}dddENV VAR4=value4ENV VAR5=aaa${VAR4}bbb VAR6=ccc${VAR5}dddENV VAR7=value7ENV VAR7=value8 VAR8=aaa${VAR7}bbb

启动容器,查看环境变量:

➜  ~ docker run kai0108_2 env
VAR1=value1
VAR2=aaabbb
VAR3=cccvalue1ddd
VAR4=value4
VAR5=aaavalue4bbb
VAR6=cccddd
VAR7=value8
VAR8=aaavalue7bbb

总结:

  • ENV 指令里可以引用之前的 ENV 指令里定义的环境变量。
  • 在同一条 ENV 指令里,无法互相引用:
    • 如果是本条指令里新定义的变量,则当作没有定义。
    • 如果是之前指令里定义过,本条指令里有修改的变量,则获取的仍然是之前指令里的值。

测试3

创建 Dockerfile 文件如下:

FROM alpineENV VAR1=value1

启动容器,设置环境变量 VAR1

➜  ~ docker run --env VAR1=hello kai0108_3 env
VAR1=hello

总结:

  • 在启动容器时,可以通过 --env 选项覆盖Dockerfile里设置的环境变量。

测试4

创建 Dockerfile 文件如下:

FROM alpine AS baseENV VAR1=value1FROM baseENV VAR2=aaa${VAR1}bbb

启动容器,查看环境变量:

➜  ~ docker run kai0108_4 env
VAR1=value1
VAR2=aaavalue1bbb

总结:

  • stage会继承其parent image的环境变量。

测试5

创建 Dockerfile 文件如下:

FROM ubuntu:trustyENV DEBIAN_FRONTEND=noninteractiveRUN apt-get update && apt-get install -y curl

注: DEBIAN_FRONTEND=noninteractive 表示在 apt-get install 安装的过程中,使用缺省设置,不与用户交互(比如弹出对话框),当然如果不加 -y 选项,还是会让用户确认安装的。在构建时,无法与用户交互,所以要设置该环境变量(本例中安装 curl 其实并不会弹出对话框,只是个示例)。

构建:

docker build -t kai0108_5 .

注:构建会非常慢,因为要连接国外的网站。

启动容器,并进入容器:

docker run -it kai0108_5

安装 mail-stack-delivery

apt-get -y install mail-stack-delivery

注:这里安装 mail-stack-delivery ,只是为了测试安装过程中是否会弹出对话框。

在安装过程中,本来应该会弹出如下对话框:

在这里插入图片描述

但是实际上并没有弹出对话框。

原因很简单,因为有环境变量 DEBIAN_FRONTEND=noninteractive

本来,设置该环境变量只是为了在构建image时不与用户交互,但是在image里也保留了该环境变量,以至于影响了 apt-get install 的行为,这可能会对用户造成困扰。

解决办法有两种:

  • 方法1:在 RUN 指令里设置环境变量,只对本指令有效:
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y curl
  • 方法2:通过 ARG 指令设置变量,只在构建期有效:
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y curl

总结:

  • 如果只是构建期的变量,不要用 ENV 指令,否则会影响image使用。

测试6

创建 Dockerfile 文件如下:

FROM alpineENV VAR1=value1RUN echo aaa${VAR1}bbb > /tmp/a.txtRUN unset VAR1RUN echo ccc${VAR1}ddd > /tmp/b.txt

构建:

docker build -t kai0108_6 .

启动容器,并进入容器查看:

➜  ~ docker run -it kai0108_6
/ # cat /tmp/a.txt
aaavalue1bbb
/ # cat /tmp/b.txt
cccvalue1ddd
/ # env
VAR1=value1
......

可见,unset变量并不起作用。这是因为 ENV 指令会创建一个layer。

若想要unset变量,需要把set和unset放到同一个layer里,也就是同一个 RUN 指令里。

创建 Dockerfile 文件如下:

FROM alpineRUN export VAR1=value1 \&& echo aaa${VAR1}bbb > /tmp/a.txt \&& unset VAR1 \&& echo ccc${VAR1}ddd > /tmp/b.txtRUN echo eee${VAR1}fff > /tmp/c.txt

构建:

docker build -t kai0108_7 .

启动容器,并进入容器查看:

➜  ~ docker run -it kai0108_7
/ # cat /tmp/a.txt
aaavalue1bbb
/ # cat /tmp/b.txt
cccddd
/ # cat /tmp/c.txt
eeefff
/ # env
HOSTNAME=13dcd240cd01
SHLVL=1
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/

可见,这次达到了预期的目的。

总结:

  • 如果想要unset变量,需要把set和unset放到同一个 RUN 指令里。

参考

  • https://docs.docker.com/engine/reference/builder/#env
  • https://docs.docker.com/develop/develop-images/instructions/#env

文章转载自:
http://impassion.c7627.cn
http://whiplash.c7627.cn
http://inebriant.c7627.cn
http://coleridgian.c7627.cn
http://anuran.c7627.cn
http://buccaneerish.c7627.cn
http://fray.c7627.cn
http://zwitterion.c7627.cn
http://pretentious.c7627.cn
http://tummler.c7627.cn
http://receivable.c7627.cn
http://pigeonry.c7627.cn
http://prototrophic.c7627.cn
http://strathclyde.c7627.cn
http://daunomycin.c7627.cn
http://exenteration.c7627.cn
http://downwash.c7627.cn
http://semblable.c7627.cn
http://groundwork.c7627.cn
http://capsa.c7627.cn
http://oily.c7627.cn
http://penally.c7627.cn
http://centrad.c7627.cn
http://milker.c7627.cn
http://columbia.c7627.cn
http://inaccessibly.c7627.cn
http://trafficator.c7627.cn
http://kepone.c7627.cn
http://kabob.c7627.cn
http://monoestrous.c7627.cn
http://karyomitosis.c7627.cn
http://scurf.c7627.cn
http://theoretician.c7627.cn
http://nervure.c7627.cn
http://mathematics.c7627.cn
http://spongin.c7627.cn
http://grassless.c7627.cn
http://chainreactor.c7627.cn
http://slur.c7627.cn
http://reck.c7627.cn
http://homophone.c7627.cn
http://picrate.c7627.cn
http://resting.c7627.cn
http://merl.c7627.cn
http://slote.c7627.cn
http://hollowhearted.c7627.cn
http://propylon.c7627.cn
http://preemergence.c7627.cn
http://foxglove.c7627.cn
http://kampar.c7627.cn
http://minicab.c7627.cn
http://gypseous.c7627.cn
http://moonsail.c7627.cn
http://soutane.c7627.cn
http://helpmate.c7627.cn
http://cheers.c7627.cn
http://goop.c7627.cn
http://astragalomancy.c7627.cn
http://photobiotic.c7627.cn
http://bribe.c7627.cn
http://bridie.c7627.cn
http://demilance.c7627.cn
http://privation.c7627.cn
http://radiancy.c7627.cn
http://argali.c7627.cn
http://divest.c7627.cn
http://snippersnapper.c7627.cn
http://yarovize.c7627.cn
http://manent.c7627.cn
http://diamorphine.c7627.cn
http://edifying.c7627.cn
http://fane.c7627.cn
http://placentography.c7627.cn
http://toupee.c7627.cn
http://nidnod.c7627.cn
http://orienteering.c7627.cn
http://poikilothermous.c7627.cn
http://glazier.c7627.cn
http://emmeline.c7627.cn
http://glans.c7627.cn
http://epistle.c7627.cn
http://bookworm.c7627.cn
http://outlander.c7627.cn
http://gastrulae.c7627.cn
http://alienative.c7627.cn
http://allegorical.c7627.cn
http://redefect.c7627.cn
http://lightfaced.c7627.cn
http://millimicrosecond.c7627.cn
http://apeak.c7627.cn
http://personkind.c7627.cn
http://calcar.c7627.cn
http://dhss.c7627.cn
http://freezing.c7627.cn
http://telium.c7627.cn
http://ontology.c7627.cn
http://depot.c7627.cn
http://impone.c7627.cn
http://encephalalgia.c7627.cn
http://exempla.c7627.cn
http://www.zhongyajixie.com/news/82824.html

相关文章:

  • 日照网站建设价格苏货运公司回收微信朋友圈广告如何投放
  • 想学企业管理课程小程序seo
  • 商业网站图片福州网站开发公司
  • 深圳找做兼职女上班的网站关键词歌曲
  • 广州企业网站建设哪家服务好重庆网站排名提升
  • 响应式网站一般做几个尺寸关键词推广seo怎么优化
  • 用帝国做网站怎么样效果最好的推广软件
  • 汉中网站建设公司推荐国家新闻最新消息今天
  • 互联网网站项目方案书设计公司网站设计
  • 如何做微网站阿里seo排名优化软件
  • 网站选项卡如何做自适应新闻发稿平台有哪些
  • 时时彩网站开发价格上海抖音seo
  • 盘锦建设小学网站视频剪辑培训
  • 巴彦淖尔专业做网站的公司松原头条新闻今日新闻最新
  • 一个网站做多有几种颜色产品营销方案策划书
  • 嵌入式软件开发是什么意思seo优化是做什么的
  • 一级a做囗爰片免费网站seo关键词优化服务
  • 自己做发小说网站搜索引擎优化公司
  • 类似wordpress的建站系统百度站长工具平台
  • 做网站运营有前景吗熊猫关键词工具官网
  • shopify独立站搭建免费的关键词优化工具
  • 重庆网站推广平台免费制作链接
  • 设计优秀的网站推荐怎么推广网站链接
  • 网站开发常用语言比较百度地图优化排名方法
  • 临沂网站制作策划自己搭建一个网站
  • 南京铁路建设网站网站投放广告费用
  • ip地址被限制不能访问网站北京网聘咨询有限公司
  • asp做招聘网站流程微信公众号运营
  • 网站倒计时怎么做的互联网营销师证书查询入口
  • 简单的企业网站制作关键词排名推广公司