Dockerfile指令详解:WORKDIR 指定工作目录
WORKDIR 指定工作目录
格式为 WORKDIR <工作目录路径>
。
使用 WORKDIR
指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR
会帮你建立目录。
之前提到一些初学者常犯的错误是把 Dockerfile
等同于 Shell 脚本来书写,这种错误的理解还可能会导致出现下面这样的错误:
RUN cd /app
RUN echo "hello" > world.txt
如果将这个 Dockerfile
进行构建镜像运行后,会发现找不到 /app/world.txt
文件,或者其内容不是 hello
。原因其实很简单,在 Shell 中,连续两行是同一个进程执行环境,因此前一个命令修改的内存状态,会直接影响后一个命令;而在 Dockerfile
中,这两行 RUN
命令的执行环境根本不同,是两个完全不同的容器。这就是对 Dockerfile
构建分层存储的概念不了解所导致的错误。
之前说过每一个 RUN
都是启动一个容器、执行命令、然后提交存储层文件变更。第一层 RUN cd /app
的执行仅仅是当前进程的工作目录变更,一个内存上的变化而已,其结果不会造成任何文件变更。而到第二层的时候,启动的是一个全新的容器,跟第一层的容器更完全没关系,自然不可能继承前一层构建过程中的内存变化。
因此如果需要改变以后各层的工作目录的位置,那么应该使用 WORKDIR
指令。
WORKDIR /appRUN echo "hello" > world.txt
如果你的 WORKDIR
指令使用的相对路径,那么所切换的路径与之前的 WORKDIR
有关:
WORKDIR /a
WORKDIR b
WORKDIR cRUN pwd
pwd
输出的结果为 /a/b/c
。
参考链接:https://www.kancloud.cn/docker_practice/docker_practice/469795
Dockerfile指令详解:WORKDIR 指定工作目录相关推荐
- Dockerfile 指令详解1
Dockerfile 指令详解 我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令.下面我们继续讲解其他的指令. COPY 复制 ...
- Dockerfile 指令详解2
ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<val ...
- Docker学习——Dockerfile 指令详解(五)
2019独角兽企业重金招聘Python工程师标准>>> 我们已经介绍了 FROM (指定基础镜像) , RUN(执行命令) ,还提及了 COPY , ADD ,其实 Dockerfi ...
- Dockerfile指令详解镜像构建实例说明
Dockerfile使用总结 Dockerfile是用来构建镜像的文本文件,里面包含了一条条用于构建镜像所需的指令和说明. Dockerfiel文件中的每一层指令都是描述如何在上一层的基础上进行该层的 ...
- Docker之Dockerfile 指令详解
闲话不多说,dokerfile常用指令解析奉上 FROM 作用:指定基础镜像,必须放在DOckerfile的第一行,表示从哪个baseimage开始构建 格式: FROM <image>: ...
- 【Docker】之 Dockerfile 指令详解
目录 Dockerfile 基本结构 Dockerfile 指令 指定基础镜像 FROM 维护者信息 MAINTAINER 元数据标签 LABEL 设置环境变量 ENV 镜像构建参数 ARG 指定工作 ...
- Dockerfile指令详解:ONBUILD 为他人作嫁衣裳
ONBUILD 为他人做嫁衣裳 格式:ONBUILD <其它指令>. ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不 ...
- Docker学习总结(32)——Dockerfile指令详解
1.ADD 复制文件 ADD指令用于复制文件,格式为: ADD <src>... <dest> ADD ["<src>",... "& ...
- Dockerfile指令详解: CMD 容器启动命令
CMD 容器启动命令 CMD 指令的格式和 RUN 相似,也是两种格式: shell 格式:CMD <命令> exec 格式:CMD ["可执行文件", "参 ...
最新文章
- 这篇实战攻略,带你轻松入门Elastic search
- 人工智能(Artificial Intelligence)常用算法
- 德国科学院院士:传统企业寻求变革,向智能制造靠近
- sony右键延迟的解决方案
- 2/7 SELECT语句:排序(ORDER BY)
- 主题:Spring注解入门(转载)
- boost安装_Centos安装MySQL
- Excel 宏编码实现,指定列的字符串截取
- Linux环境下用vim编写编译运行C/C++程序
- 关于空间计量模型中自回归系数大于1的解释
- java中 移位运算符_java中的移位运算符心得总结
- java jar apktool,apktool.jar
- 不了解外贸装箱,这一篇够够的
- 安卓编程用什么软件_如何用手机进行编程?有哪些值得推荐的软件?
- AKM 48450-1 230B 24B 40mA
- manjaro安装与配置(vscode,微信,美化,输入法)
- SAP部分清账与剩余清账
- iOS开发 Tips 保存视频文件到相册
- 免费的远程桌面工具 Chrome Remote Desktop
- 用金字塔原则思考与表达