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 指定工作目录相关推荐

  1. Dockerfile 指令详解1

    Dockerfile 指令详解 我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令.下面我们继续讲解其他的指令. COPY 复制 ...

  2. Dockerfile 指令详解2

    ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<val ...

  3. Docker学习——Dockerfile 指令详解(五)

    2019独角兽企业重金招聘Python工程师标准>>> 我们已经介绍了 FROM (指定基础镜像) , RUN(执行命令) ,还提及了 COPY , ADD ,其实 Dockerfi ...

  4. Dockerfile指令详解镜像构建实例说明

    Dockerfile使用总结 Dockerfile是用来构建镜像的文本文件,里面包含了一条条用于构建镜像所需的指令和说明. Dockerfiel文件中的每一层指令都是描述如何在上一层的基础上进行该层的 ...

  5. Docker之Dockerfile 指令详解

    闲话不多说,dokerfile常用指令解析奉上 FROM 作用:指定基础镜像,必须放在DOckerfile的第一行,表示从哪个baseimage开始构建 格式: FROM <image>: ...

  6. 【Docker】之 Dockerfile 指令详解

    目录 Dockerfile 基本结构 Dockerfile 指令 指定基础镜像 FROM 维护者信息 MAINTAINER 元数据标签 LABEL 设置环境变量 ENV 镜像构建参数 ARG 指定工作 ...

  7. Dockerfile指令详解:ONBUILD 为他人作嫁衣裳

    ONBUILD 为他人做嫁衣裳 格式:ONBUILD <其它指令>. ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不 ...

  8. Docker学习总结(32)——Dockerfile指令详解

    1.ADD 复制文件 ADD指令用于复制文件,格式为: ADD <src>... <dest> ADD ["<src>",... "& ...

  9. Dockerfile指令详解: CMD 容器启动命令

    CMD 容器启动命令 CMD 指令的格式和 RUN 相似,也是两种格式: shell 格式:CMD <命令> exec 格式:CMD ["可执行文件", "参 ...

最新文章

  1. 这篇实战攻略,带你轻松入门Elastic search
  2. 人工智能(Artificial Intelligence)常用算法
  3. 德国科学院院士:传统企业寻求变革,向智能制造靠近
  4. sony右键延迟的解决方案
  5. 2/7 SELECT语句:排序(ORDER BY)
  6. 主题:Spring注解入门(转载)
  7. boost安装_Centos安装MySQL
  8. Excel 宏编码实现,指定列的字符串截取
  9. Linux环境下用vim编写编译运行C/C++程序
  10. 关于空间计量模型中自回归系数大于1的解释
  11. java中 移位运算符_java中的移位运算符心得总结
  12. java jar apktool,apktool.jar
  13. 不了解外贸装箱,这一篇够够的
  14. 安卓编程用什么软件_如何用手机进行编程?有哪些值得推荐的软件?
  15. AKM 48450-1 230B 24B 40mA
  16. manjaro安装与配置(vscode,微信,美化,输入法)
  17. SAP部分清账与剩余清账
  18. iOS开发 Tips 保存视频文件到相册
  19. 免费的远程桌面工具 Chrome Remote Desktop
  20. 用金字塔原则思考与表达

热门文章

  1. java程序设计颜志军_JSP 自定义标签之一 简单实例
  2. hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
  3. go语言基础到提高(12)-函数类型与函数变量
  4. C指针原理(47)-C应用技巧(2)
  5. 通俗讲解和学习SQL
  6. 【数据竞赛】大规模数据调参用这个包就可以啦。
  7. 导师实验室对学生影响有多大?
  8. AI基础:数据划分、超参数调整、正则化
  9. 找对象困难?不如让AI算法来帮你
  10. 推荐:常见算法的python实现(github上25000多star)