我有用于给定容器的带有卷部分的docker-组合文件:
video-streaming:
image: video-streaming
build:
context: ./video-streaming
dockerfile: Dockerfile-dev
container_name: video-streaming
volumes:
- /tmp/history/npm-cache:/root/.npm:z我正在windows上运行docker,并且映像是基于linux的。当我输入容器并将文件添加到/root/..npm,然后关闭容器并再次运行它时,该文件仍然存在,因此这个卷可以工作。但是问题是我在哪里可以找到它在Windows主机上的位置呢?
发布于 2022-07-10 23:31:56
您应该在C:\ProgramData\docker\volumes中找到这些卷。文件名将是一个散列,您可以使用docker inspect进行检查。
如果没有,那么请注意,您只是将一个主机目录/tmp/history/npm-cache安装到您的容器。这个目录是您的卷。
发布于 2022-07-11 08:30:24
在windows中使用停靠器时,问题是您使用的是旧的docker工具箱还是使用WSL/WSL 2的较新的工具箱
Docker桌面配置Linux容器和WSL/WSL 2
对接引擎实际上不在窗口上运行,但是在WSL实例中,docker桌面使停靠命令在窗口上可用,以便于使用。因此,卷可能在那个WSL实例(linux)中。
您可以通过在powershell中键入wsl -l来找出您有哪些WSL实例。它们的文件系统可在windows上的\\\wsl$路径中使用.
在您的示例中,卷没有命名,它位于您为其指定的确切位置。
/tmp/history/npm-cache,但是在安装坞引擎的WSL实例中。
通过WSL
在powershell中编写wsl ls /tmp/history,您应该可以在那里看到npm-cache。
wsl命令允许在实际linux实例(默认实例)上运行管道linux命令,该实例可能是运行坞引擎的实例。
或者,只需键入wsl并转到路径cd /tmp/history,就可以连接到linux。
一旦进入wsl实例,您就可以编写explorer.exe .在该位置(在windows上)打开资源管理器。
注意,路径总是以\\wsl$开头,这样您就可以在窗口上找到该路径,并看到所有wsl实例及其文件系统,尝试在资源管理器中搜索"npm-cache“,您可能会找到它。
通过Docker命令
docker volume ls将为您提供所有可用的卷。您的名字没有命名,所以它可能是'UUID‘中的一个。您可以检查每个卷以找到它的位置(可能还在wsl实例中),您可以看到每个卷都有一个指向卷的位置(在wsl实例中)的字段。
未命名卷是以来自您的用户的不同权限创建的,因此您可能需要sudo通过wsl终端与它们交互。
如果它通过\\wsl$上的windows文件资源管理器,您可能不需要额外的权限。
https://stackoverflow.com/questions/72932420
复制相似问题