当前位置: 首页 > 知识库问答 >
问题:

Windows WSL2 docker.exe卷装入与wsl docker卷装入不同

曹经业
2023-03-14

我在Windows上安装了支持WSL2的Docker Desktop。一切按预期进行。当我使用卷挂载运行容器Docker run-it--rm-v w:\projects:/projects busybox时,我可以访问该文件夹中的所有windows文件。

不幸的是,docker中的windows共享的性能并不是很好,所以我尝试从wsl机器挂载一条路径。

docker run -it --rm -v /home/:/myHome busybox ls -l /myHome
wsl docker run -it --rm -v /home/:/myHome busybox ls -l /myHome

但是使用Docker的输出只是total0,而使用WSL的输出是我的主目录。

有人能给我解释一下当我从Windows运行Docker时,这个/home目录(物理上/在wsl/我的计算机中)在哪里吗?是否可以运行Docker并且它运行WSL Docker而没有符号链接/路径修改,这样我就可以在容器中挂载我的linux目录了?

共有1个答案

宋翔
2023-03-14

如果安装了wsl-2,您可以通过以下路径访问其文件系统:-

\\wsl$

/home不仅在Windows的文件系统中不存在,而且还可以正常工作

但是,如果登录到wsl发行版,您可以使用/home或任何其他基于linux的目录。请注意,如果您从Windows运行以下命令,它将不会装入任何卷。它应该只能从wsl发行版运行

docker run --name mycontainer -v /home:myhome busybox
\\wsl$\Ubuntu-16.04\home

要挂载wsl下的任何目录,请确保您打开了选项“Enable integration with my default wsl发行版”https://docs.docker.com/docker-for-windows/wsl/

要将WSL的目录作为卷从windows装入,请以给定格式提供主机卷路径

docker run --name mycontainer -v \\wsl$\Ubuntu-16.04\home:/myHome busybox

基本上,Docker run-v对其执行的环境(即windows或wsl)有影响

如果您为docker启用了wsl-2,但不想使用发行版的文件系统,则docker卷位于以下路径中

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
 类似资料:
  • 我的Dockerfile有一个在EntryPoint上运行的脚本。容器计划用我的代码所在的卷挂载运行,一旦容器用卷挂载运行,它需要运行几个命令。 docker run-itd-v/home/user/directory:/my-mount-dir build-container 注意:startup-script.sh包含应该在挂载的目录文件上运行的命令。

  • 问题内容: 我有一个jenkins容器正在运行,并且希望在容器提交中隔离其配置。唯一的问题是,码头工人不会提交已安装卷的更改-因此我必须将其卸载。 有没有办法让docker挂载卷 并 提交目录更改? 我读到了有关卷绑定的 只读 选项。可能有帮助吗? 问题答案: 不幸的是,此功能不可用。已经提出过很多次,但开发人员并未接受。主要原因是可移植性。卷不应该是映像的一部分,而是存储在映像之外。 但是,您仍

  • 我正在运行一个Jenkins集群,其中主集群和从集群都作为Docker容器运行。 主机是在MacOS上运行的最新boot2docker VM。 为了让Jenkins能够使用Docker执行部署,我安装了Docker。从主机到Jenkins容器的sock和docker客户端,如下所示:- 我在将卷安装到在Jenkins容器内运行的Docker容器时面临问题。例如,如果我需要在Jenkins容器中运行

  • 我正在尝试对接一个PHP应用程序。在dockerfile中,我下载归档文件,解压缩文件,等等。 一切正常。但是,如果发布了一个新版本,并且我更新了dockerfile,我就必须重新安装应用程序,因为config.php会被覆盖。 所以我想我可以将文件装入一个卷,就像我对数据库所做的那样。 然而,这两种方式都行不通。有了装入的卷,我看到上传被创建了。 但它失败的原因是: /var/www/html/

  • 对于本地开发人员,我需要在Docker容器中装入一个不同的配置文件。使用命令行就很容易实现。是否可以从文件中的(使用创建)执行此操作?