是否可以从非容器的Docker映像中检索文件?
我创建了一个使用docker的应用程序。我创建了这样一个图像:是否可以从非容器的Docker映像中检索文件?,docker,Docker,我创建了一个使用docker的应用程序。我创建了这样一个图像:docker build-t myapp. 在我的图像中(使用docker run-it myapp/bin/bash访问),创建了一个图像文件 我想获得该文件在我的本地查看,因为我发现在Docker上查看图像是一个复杂的过程 我尝试了以下操作:docker cp myapp:/result.png./基于Web上看到的建议,但我得到了以下错误:来自守护程序的错误响应:没有这样的容器:myapp您可以将本地文件夹映射到映像中的卷,然后
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
图像的容器。它具有IDaa58c8ff2f34
获得容器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
图像的容器。它具有IDaa58c8ff2f34
获得容器ID后,可以将其传递给docker cp
以复制文件
指定容器名称
另一种方法是指定容器的名称,而不必查找它,如果您正在自动化/编写脚本,这种方法可能更可取
docker run -it --name mycontainer myapp /bin/bash
这将创建一个名为
mycontainer
的容器。然后,您可以将该名称提供给docker cp
或其他命令。请注意,您的容器仍然有一个ID,如上例所示,但您也可以使用此名称来引用它。您需要在容器运行时执行cp-即当您可以在映像中时-从运行的容器外部执行cp您需要在容器运行时执行cp-即当您可以在映像中时-从运行的容器外部执行cp