假设我想要结合这些命令
RUN command_1
ENV FOO bar
RUN command_2
Run Code Online (Sandbox Code Playgroud)
成
RUN command_1 && export FOO=bar && command_2
Run Code Online (Sandbox Code Playgroud)
并且想知道用RUN exportvs 设置变量ENV是否相同.
换句话说,Dockerfile中这些命令之间有区别吗?
ENV FOO bar
Run Code Online (Sandbox Code Playgroud)
VS
RUN export FOO=bar
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 100
如问题684所示,export不会持续跨图像.(不要忘记每个Dockerfile指令将生成一个中间容器,提交到中间图像:该图像不会保留导出的值)
ENV将:
ENV当从生成的图像运行容器时,使用的环境变量将保持不变.
您可以使用docker inspect和查看值,并使用它们进行更改docker run --env <key>=<value>.
这个问题说明了:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Run Code Online (Sandbox Code Playgroud)
当我这样做时
docker run [img] bash -c 'echo $PATH',从不包括/foo/bar.
创建一个包含以下内容的新dockerfile:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Run Code Online (Sandbox Code Playgroud)
然后建立它.最后一步的输出是:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Run Code Online (Sandbox Code Playgroud)
你可以看到:
FOO由于ENV关键字,通过中间容器持续存在;BAR由于export命令,下一步不会持续存在;BAZ 正确显示,因为该变量用于同一容器.小智 5
我认为这会有所帮助
RUN echo "export FOO=bar" >> /etc/bash.bashrc
| 归档时间: |
|
| 查看次数: |
39092 次 |
| 最近记录: |