我对.
表示它是映像当前目录的缩写还是它是本地计算机上的当前工作目录的缩写感到困惑。还是大多数控制台命令中的.
都具有相同的含义,例如基本上选择了当前目录中的全部。
COPY somecode.java .
#copy the rest of the code
COPY . .
.
似乎也意味着在当前目录中找到docker文件。
docker build -t image-tag .
答案 0 :(得分:3)
.
仅表示“当前工作目录”
在docker build
命令的上下文中,您正在使用它来表示docker build
的构建上下文是当前的工作目录。像这样:
docker build -t mytag:0.1 .
假设您具有以下结构:
/home/me/myapp/
├── Dockerfile
├── theapp.py
然后您从docker build
调用/home/me/myapp
命令-您将当前工作目录作为构建上下文。这意味着Docker在构建时将看到以下文件结构:
/
├── Dockerfile
├── theapp.py
在Dockerfile
的上下文中,含义相同。图像的内部和外部。
以下面的COPY
指令为例:
COPY . /app
此处.
表示执行docker build
命令的当前工作目录。这与传递给docker build
命令的构建上下文有关。
对于此COPY
指令:
COPY theapp.py .
这意味着获取文件theapp.py
并将其复制到正在构建的Docker映像的工作目录中。可以在构建时使用WORKDIR
指令设置此目录,以便:
WORKDIR /app
COPY theapp.py .
将在生成的docker映像中留下文件/app/theapp.py
。
最后,此COPY
指令:
COPY . .
相对于传递给它的构建上下文,方法从发布docker build命令的工作目录中获取所有内容。并将其复制到docker映像的当前工作目录。
答案 1 :(得分:3)
我在您的问题上看到3个.
个字符,所以让我一个个地展开。
第一个.
字符就是您当前的目录。
COPY . .
第二个点代表虚拟机上的当前位置。每当您在Dockerfile中运行cd
命令时。这可能很容易理解。
第一个点有点难以理解。第一个点字符代表主机上的当前位置。在docker build
命令之后输入的位置,例如:“ docker build [options] <location>
”。
每当您调用docker build
命令时,点字符都表示当前目录。例如:
[~]$ docker build .
为该用户在真实计算机上的默认主目录表示的点字符。
答案 2 :(得分:1)
这取决于上下文。在您的COPY somecode.java .
中是图片。在COPY . .
中都是。第一个点在本地计算机中,第二个点在图像中。
在docker build
命令中,它告诉Docker从本地计算机上的工作目录中获取新生成映像的文件。
正如其他人所说,它基本上只是意味着“当前工作目录”。但是在构建Docker映像时,有两个。您要在其中构建映像的本地计算机中的一个。第二个是映像中内置的文件系统。
答案 3 :(得分:0)
。(点)表示当前工作目录。