WORKDIR指令用于为所有后续Dockerfile指令设置工作目录。 Dockerfile中一些常用的指令是RUN , ADD , CMD , ENTRYPOINT和COPY。如果未手动创建WORKDIR,则会在处理指令期间自动创建它。使用WORKDIR指令时需要注意的几点如下:
- WORKDIR不会创建新的中间图像层。
- 它将元数据添加到图像配置。
- 您可以在Dockerfile中有多个WORKDIR指令。
- 如果将相对路径用作工作目录,则它将相对于先前的工作目录。
- 默认路径是/
在本文中,我们将讨论如何在Dockerfile中使用WORKDIR指令。我们还将讨论另外两种在Dockerfile内发布工作目录的方法。请按照以下步骤操作WORKDIR指令:
第1步:创建Dockerfile
您可以使用以下模板创建Dockerfile 。
FROM ubuntu:latest
WORKDIR /my-work-dir
第2步:构建Docker映像
要构建Docker映像,可以使用Docker Build命令。
sudo docker build -t workdir-demo
步骤3:运行Docker容器
要运行Docker容器,可以使用Docker Run命令。
sudo docker run -it workdir-demo
上面的命令打开容器的bash。
步骤4:验证工作目录
您可以使用打印工作目录(pwd)命令来打印工作目录。
现在。让我们讨论在Dockerfile中发布工作目录的方法。有两种可能的方法,下面将对这两种方法进行说明:
1.通过指定相对路径的WORKDIR
让我们看看如何使用WORKDIR指令指定相对路径。
第一步是创建一个Dockerfile ,如下所述:
FROM ubuntu:latest
WORKDIR /my-work-dir
RUN echo "work directory 1" > file1.txt
WORKDIR /my-work-dir-2
RUN echo "work directory 2" > file2.txt
现在,构建并运行Docker容器。
sudo docker build -t workdir-demo .
sudo docker run -it workdir-demo bash
最后,打印工作目录。
pwd
第一个echo语句在工作目录设置为“ my-work-dir”文件夹的情况下运行。这就是为什么如果使用ls命令查看文件夹的内容,则会在其中找到“ file1.txt”的原因 “ my-work-dir”文件夹。第二条WORKDIR指令将工作目录更改为“ my-work-dir-2” ,因此文件“ file2.txt”位于该文件夹内。
2.通过指定环境变量来生成WORKDIR
发出工作目录的第二种方法是利用环境变量。请按照以下步骤进行操作:
第一步是使用以下Dockerfile模板,如下所示:
FROM ubuntu:latest
ENV DIRPATH /app
WORKDIR $DIRPATH
在这里,我们将环境变量DIRPATH设置为/ app目录,并设置了WORKDIR。
现在,在运行Docker Container之后,您将找到设置为/ app的目录。
sudo docker build -t workdir-demo .
sudo docker run -it workdir-demo
pwd
总而言之,在本文中,我们讨论了如何在Dockerfile中使用WORKDIR指令来设置工作目录。我们还看到了如何使用相对路径和环境变量来设置工作目录。