问题标签 [docker-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
180 浏览

kubernetes - 如何使用 kubernetes 将数据从一个容器 cp 到另一个容器

假设我们有一个简单的 deployment.yml 文件:

问题是这个图像/容器依赖于另一个图像/容器 - 它需要从另一个图像中获取数据,或者使用一些共享卷。

如何告诉 kubernetes 下载另一个镜像,将其作为容器运行,然后将数据从中复制到上述文件中声明的容器中?

看起来这篇文章解释了如何。

但目前还不是 100% 清楚它是如何工作的。看起来您创建了一些共享卷,启动两个容器,使用该共享卷?

所以我根据那个链接,我把它添加到我的deployment.yml中:

我的主要犹豫是,将 /nltk_data 安装为共享卷将覆盖可能已经存在的内容。

所以我假设我需要做的是将它安装在其他位置,然后为源数据容器创建 ENTRYPOINT:

这样一旦容器启动,就会将其写入共享卷。

所以我有两个问题:

  1. 如何在另一个容器开始使用 kubernetes 之前运行一个容器并完成一项工作?

  2. 如何写入共享卷而不让共享卷覆盖映像中的内容?换句话说,如果我在图像/容器中有 /xyz,我不想复制/xyz到,/shared_volume_mount_location如果我不需要的话。

0 投票
1 回答
792 浏览

visual-studio - 是在不同的层中复制多个项目文件,还是在创建 Docker 映像时一次性复制更好?

我正在从这个 .NET Core 应用程序创建一个 Docker 容器,该应用程序在解决方案中有多个项目,我想知道将COPY每个项目文件分开还是一行更好。

Visual Studio 生成一个 Dockerfile,它将每个项目文件复制到新的一行,如下所示:

但是,使用 Docker 创建 .NET 应用程序的 Microsoft文档显示为仅使用单个COPY语句的“优化”,如下所示:

据说,根据我对文章的理解,创建一个更大的图像,但COPY如果一个项目发生变化,则不必对所有其他项目。

有趣的是,Docker 文档提到

COPY它们是单独的,而不是一次性的。这确保了每个步骤的构建缓存仅在特定需要的文件发生更改时才失效(强制重新运行该步骤)。

这基本上与微软文章所说的相矛盾,即COPY当一个项目发生变化时必须重新运行该步骤。

我想知道哪个选项更好,为什么,或者出于什么目的。或者我可能误解了一些文档,那么请向我解释其中的区别。

0 投票
1 回答
7974 浏览

docker - Docker 多阶段:如何在阶段之间复制构建的文件?

我是 Docker 的初学者,我正在尝试分两个阶段构建图像,如下所述:https ://docs.docker.com/develop/develop-images/multistage-build/

您可以选择性地将工件从一个阶段复制到另一个阶段

查看那里给出的示例,我认为可以在第一阶段构建一些文件,然后将它们提供给下一个阶段:

(示例取自上述链接页面)

这不是 theCOPY app.go .和 theCOPY --from=builder /go/src/github.com/alexellis/href-counter/app .应该做的吗?

我可能对正在发生的事情有一个完全的误解,因为当我尝试做类似的事情时(见下文),COPY第一阶段的命令似乎无法看到刚刚构建的文件(我可以确认它们实际上是使用一个RUN ls步骤构建的,但随后出现lstat <the file>: no such file or directory错误)。

事实上,我可以收集到的大多数其他信息COPY(除了上面链接中的示例)都表明这COPY实际上是为了从docker build启动命令的目录中复制文件,而不是从构建环境中复制文件。

这是我的 Dockerfile:

下面是当我docker build .从包含 Dockerfile 的目录运行时构建结束的方式:

我应该如何继续使构建的文件可用于下一阶段?

0 投票
2 回答
1072 浏览

docker - Docker 没有添加这样的文件或目录

以下是我的根目录:

这是我的 Dockerfile 的内容:

这是我正在运行的命令:

这会导致以下错误消息:

添加失败:stat /var/lib/docker/tmp/docker-builder946291442/docker/CodeExperiments.jar:没有这样的文件或目录

我究竟做错了什么?

0 投票
1 回答
746 浏览

docker - Dockerfile COPY 命令将文件复制为目录

请注意:这个问题提到了 Java 和 Java 密钥库,但实际上与 Java 无关,任何对 Docker 和编写 Dockerfiles 有足够了解的人都应该可以回答。


我有一个 Web 服务 ( myservice),它是一个 Docker 化的 JVM 应用程序。它Dockerfile看起来像这样:

作为记录,mykeystore.p12是一个文件(不是目录!),它存储了 SSL 证书,该服务将返回给任何试图与其建立连接的客户端。具体来说,它是一个加密的Java 密钥库,但这超出了这个问题的范围,而且不重要。重要的是你明白它是一个文件,而不是一个目录。我将文件存储在本地计算机上。

.env我在这个项目的根目录中也有以下文件:

因此,../apprunner/certs/mykeystore.p12它是我的文件系统上所在位置的相对路径mykeystore.p12,我希望将该 URI 存储在.env文件中并用作Dockerfile.

我像这样构建图像:

我像这样运行该图像的容器:

当我 SSH 进入正在运行的容器时,我确实mykeystore.p12在本地文件系统上看到了,除了......

它是一个目录!不是文件!

它里面有很多奇怪的、意想不到的东西,比如我项目中其他目录的源文件!

显然,${KS_FILE}在 my 中使用 fromDockerfile或 URI 值如何存储在我的.env文件中都有问题。无论如何,我必须改变什么:

  1. KS_FILE我在我的文件中指定了环境变量的文件路径和名称.env;和
  2. 在 my.env和之间Dockerfile,该文件路径 + 名称作为文件复制到正在运行的容器中,这样当我ls -al从容器内部时,我将其视为文件?
0 投票
1 回答
1264 浏览

docker - 构建 docker 映像时,使用现有相对路径添加和复制失败

环境: Windows 10 ,Docker Desktop (Docker Engine v20.10.6)

当 Docker 映像COPYADD第一个参数是以../../. 错误消息显示任何类似的路径../../a/b/c都被替换为/a/b/c,因此无法在主机上找到。

请帮助我找到解决问题的方法。在多篇文章和论坛中,我看到 Docker 可以正确处理相对路径,但在这种情况下无法找出问题所在。

项目文件夹结构

Dockerfile

从 project_root 执行命令

得到这个错误

找不到将相对路径替换为绝对路径的原因。

0 投票
2 回答
159 浏览

bash - dockerfile 复制文件列表,当列表取自本地文件时

我有一个文件,其中包含我需要通过 Dockerfile 的COPY命令复制的路径列表docker build

我的用例是这样的:我有一个 pythonrequirements.txt文件,当我在项目内部调用多个其他需求文件时,使用-r PATH.

现在,我想COPY单独 docker 所有需求文件,运行 pip install,然后复制项目的其余部分(用于缓存等)。到目前为止,我还没有设法使用 dockerCOPY命令做到这一点。

从文件中获取路径不需要帮助-我已经做到了-只要可以做到-如何?

谢谢!

0 投票
1 回答
21 浏览

docker - 为什么这个文件被复制到 Docker 镜像的根目录而不是工作目录

使用以下内容Dockerfile

build以下命令:

为什么somefile在根 ( /) 中找到:

而不是工作目录 ( /usr/src/app):

0 投票
1 回答
97 浏览

docker - 将文件从 Docker 复制到另一个 Docker 并执行它

正如我上面提到的,我想将一个可执行文件从一个 docker 复制到另一个 docker 并运行它

不起作用,因为docker cp只能复制“docker to host”或“host to docker”。

作为下一步,我需要从源 docker 本身运行可执行文件。有人可以帮我吗?

0 投票
1 回答
115 浏览

docker - 无论是否为空,都将目录复制到 docker build - 在“复制失败:未指定源文件”时失败

csv在上下文目录中有目录docker build。我想在所有情况下将其复制到 docker 映像中(对于主机中的空目录,会创建映像内部的空目录,对于主机中的非空目录,它会与所有内容一起复制)。

COPY csv/* /csv/目录为COPY failed: no source files were specified空时出现错误。

我在 SO 上发现的类似问题在设置或意图(多阶段构建复制现有 jar当然是现有文件)方面与我的情况不同,所以我在这里选择问答式,而不是用不相关的答案搞乱问题。这个 Github issue也是相关的。