有什么作用。在码头意味着什么?它是指映像的当前工作目录还是本地计算机?

Ni *_*kle 4 docker

我对这是否.意味着该图像的当前目录的缩写或它是本地计算机上的当前工作目录的缩写感到困惑。还是.大多数控制台命令中的含义相同,例如本质上是在当前目录中选择全部。

COPY somecode.java .

#copy the rest of the code

COPY . .
Run Code Online (Sandbox Code Playgroud)

.似乎也意味着在当前目录中找到docker文件。

docker build -t image-tag .
Run Code Online (Sandbox Code Playgroud)

And*_*zen 8

.仅仅意味着“当前工作目录”

码头工人

docker build命令的上下文中,您正在使用它来表示其构建上下文docker build是当前工作目录。像这样:

docker build -t mytag:0.1 .
Run Code Online (Sandbox Code Playgroud)

假设您具有以下结构:

/home/me/myapp/
??? Dockerfile
??? theapp.py
Run Code Online (Sandbox Code Playgroud)

然后docker build从中调用命令/home/me/myapp-您将当前工作目录作为构建上下文传递。这意味着Docker在构建时将看到以下文件结构:

/
??? Dockerfile
??? theapp.py
Run Code Online (Sandbox Code Playgroud)

Docker文件

在a的上下文中Dockerfile,它表示相同。图像的内部和外部。

以以下COPY说明为例:

COPY . /app
Run Code Online (Sandbox Code Playgroud)

这里的.意思docker build是执行命令的当前工作目录。这将是相对于传递给docker build命令的构建上下文。

对于此COPY说明:

COPY theapp.py .
Run Code Online (Sandbox Code Playgroud)

这意味着,获取文件theapp.py并将其复制到正在构建的Docker映像的工作目录中。可以使用以下WORKDIR指令在构建时设置此目录:

WORKDIR /app
COPY theapp.py .
Run Code Online (Sandbox Code Playgroud)

将文件/app/theapp.py留在生成的docker映像中。

最后,此COPY指令:

COPY . .
Run Code Online (Sandbox Code Playgroud)

意味着从发出docker build命令的工作目录中获取所有内容,相对于传递给它的构建上下文而言。并将其复制到docker镜像的当前工作目录。


Trầ*_*Tâm 5

.在您的问题上看到了3个字符,所以让我一一扩大。

如您所料,第一个.字符表示当前目录。

在您的Dockerfile中

COPY . .
Run Code Online (Sandbox Code Playgroud)

第二个点代表虚拟机上的当前位置。每当您cd在Dockerfile中运行命令时。这可能很容易理解。

第一个点有点难以理解。第一个点字符代表主机上的当前位置。在docker build命令后输入的位置是这样的:“ docker build [options] <location>”。

Docker构建命令

每次调用docker build命令时,点字符表示当前目录。例如:

[~]$ docker build .

在实际计算机上为该用户的默认主目录表示的点字符。