Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从非容器的Docker映像中检索文件?_Docker - Fatal编程技术网

是否可以从非容器的Docker映像中检索文件?

是否可以从非容器的Docker映像中检索文件?,docker,Docker,我创建了一个使用docker的应用程序。我创建了这样一个图像:docker build-t myapp. 在我的图像中(使用docker run-it myapp/bin/bash访问),创建了一个图像文件 我想获得该文件在我的本地查看,因为我发现在Docker上查看图像是一个复杂的过程 我尝试了以下操作:docker cp myapp:/result.png./基于Web上看到的建议,但我得到了以下错误:来自守护程序的错误响应:没有这样的容器:myapp您可以将本地文件夹映射到映像中的卷,然后

我创建了一个使用docker的应用程序。我创建了这样一个图像:
docker build-t myapp.

在我的图像中(使用
docker run-it myapp/bin/bash
访问),创建了一个图像文件

我想获得该文件在我的本地查看,因为我发现在Docker上查看图像是一个复杂的过程


我尝试了以下操作:
docker cp myapp:/result.png./
基于Web上看到的建议,但我得到了以下错误:
来自守护程序的错误响应:没有这样的容器:myapp

您可以将本地文件夹映射到映像中的卷,然后通过这种方式将文件从映像中复制出来

docker run -it -v /place/to/save/file:/store myapp /bin/bash cp /result.png /store/

您可以将本地文件夹映射到映像中的卷,然后通过这种方式将文件从映像中复制出来

docker run -it -v /place/to/save/file:/store myapp /bin/bash cp /result.png /store/
图像名称!=容器名称
myapp
是图像的名称,它不是正在运行的容器

使用
docker run
时,您正在创建一个基于
myapp
图像的容器。它将被分配一个ID,您可以通过
docker ps
看到该ID。例如:

$ docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
aa58c8ff2f34        portainer/portainer   "/portainer"        4 months ago        Up 5 days           0.0.0.0:9909->9000/tcp   portainer_portainer_1
在这里,您可以看到基于
portainer/portainer
图像的容器。它具有ID
aa58c8ff2f34

获得容器ID后,可以将其传递给
docker cp
以复制文件

指定容器名称 另一种方法是指定容器的名称,而不必查找它,如果您正在自动化/编写脚本,这种方法可能更可取

docker run -it --name mycontainer myapp /bin/bash
这将创建一个名为
mycontainer
的容器。然后,您可以将该名称提供给
docker cp
或其他命令。请注意,您的容器仍然有一个与上述示例类似的ID,但您也可以使用此名称来引用它。

Image name!=容器名称
myapp
是图像的名称,它不是正在运行的容器

使用
docker run
时,您正在创建一个基于
myapp
图像的容器。它将被分配一个ID,您可以通过
docker ps
看到该ID。例如:

$ docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
aa58c8ff2f34        portainer/portainer   "/portainer"        4 months ago        Up 5 days           0.0.0.0:9909->9000/tcp   portainer_portainer_1
在这里,您可以看到基于
portainer/portainer
图像的容器。它具有ID
aa58c8ff2f34

获得容器ID后,可以将其传递给
docker cp
以复制文件

指定容器名称 另一种方法是指定容器的名称,而不必查找它,如果您正在自动化/编写脚本,这种方法可能更可取

docker run -it --name mycontainer myapp /bin/bash

这将创建一个名为
mycontainer
的容器。然后,您可以将该名称提供给
docker cp
或其他命令。请注意,您的容器仍然有一个ID,如上例所示,但您也可以使用此名称来引用它。

您需要在容器运行时执行cp-即当您可以在映像中时-从运行的容器外部执行cp您需要在容器运行时执行cp-即当您可以在映像中时-从运行的容器外部执行cp