首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Dockerfile中RUN cd与WORKDIR的区别

在Dockerfile中,RUN cd和WORKDIR都是用于在Docker容器中执行命令的指令,但它们有一些区别。

  1. RUN cd命令:
    • 概念:RUN cd命令用于在Docker容器中执行命令并切换当前工作目录。
    • 作用:它可以在构建镜像的过程中执行命令,并且可以改变当前工作目录。
    • 优势:使用RUN cd命令可以在构建镜像时执行一些命令,如安装依赖、下载文件等,并且可以在特定目录下执行这些命令。
    • 应用场景:适用于需要在构建镜像时执行命令并切换目录的场景。
    • 示例:
    • 示例:
  • WORKDIR指令:
    • 概念:WORKDIR指令用于在Docker容器中设置工作目录。
    • 作用:它可以设置容器中的工作目录,使后续的命令在该目录下执行。
    • 优势:使用WORKDIR指令可以方便地设置容器中的工作目录,避免在每个命令中都使用绝对路径。
    • 应用场景:适用于需要在容器中设置工作目录的场景。
    • 示例:
    • 示例:

总结:

  • RUN cd命令用于在Docker容器中执行命令并切换当前工作目录,适用于构建镜像时执行命令并切换目录的场景。
  • WORKDIR指令用于在Docker容器中设置工作目录,适用于设置容器中的工作目录的场景。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Docker file的详解

-----------------------------------------------------------Dockerfile------------------------------------------------------ Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 虽然指令忽略大小写,但是建议使用大写。 FROM 命令 FROM <p_w_picpath> 或 FROM <p_w_picpath>:<tag> 这个设置基本的镜像,为后续的命令使用,所以应该作为Dockerfile的第一条指令。 比如: FROM ubuntu 如果没有指定 tag ,则默认tag是latest,如果都没有则会报错。 RUN 命令 RUN命令会在上面FROM指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。 两种格式: RUN <command> (the command is run in a shell - `/bin/sh -c`) 或: RUN ["executable", "param1", "param2" ... ]  (exec form) RUN命令等价于: docker run p_w_picpath command docker commit container_id 注释 使用 # 作为注释 如: # Memcached # # VERSION       1.0 # use the ubuntu base p_w_picpath provided by dotCloud FROM ubuntu # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update # install memcached RUN apt-get install -y memcached MAINTAINER 命令 MAINTAINER <name> MAINTAINER命令用来指定维护者的姓名和联系方式 如: MAINTAINER Guillaume J. Charmes, guillaume@dotcloud.com ENTRYPOINT 命令 有两种语法格式,一种就是上面的(shell方式): ENTRYPOINT cmd param1 param2 ... 第二种是 exec 格式: ENTRYPOINT ["cmd", "param1", "param2"...] 如: ENTRYPOINT ["echo", "Whale you be my container"] ENTRYPOINT 命令设置在容器启动时执行命令 root@tankywoo-docker:~# cat Dockerfile FROM ubuntu ENTRYPOINT echo "Welcome!" root@tankywoo-docker:~# docker run 62fda5e450d5 Welcome! USER 命令 比如指定 memcached 的运行用户,可以使用上面的 ENTRYPOINT 来实现: ENTRYPOINT ["memcached", "-u", "daemon"] 更好的方式是: ENTRYPOINT ["memcached"] USER daemon EXPOSE 命令 EXPOSE 命令可以设置一个端口在运行的镜像中暴露在外 EXPOSE <port> [<port>...] 比如memcached使用端口 11211,可以把这个端口暴露在外,这样容器外可以看到这个端口并与其通信。 EXPOSE 11211 一个完整的例子: # Memcached # # VERSION       2.2 # use the ubuntu base p_w_picpath provided by dotCloud FROM ubuntu MAINTAINER Victor Coisne victor.coisne@dotcloud.com # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get u

01
领券