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 在windows托管的ubuntu容器中列出包含200K文件的共享卷中目录的内容会被卡住 问题_Docker_Windows Subsystem For Linux_Docker Volume - Fatal编程技术网

Docker 在windows托管的ubuntu容器中列出包含200K文件的共享卷中目录的内容会被卡住 问题

Docker 在windows托管的ubuntu容器中列出包含200K文件的共享卷中目录的内容会被卡住 问题,docker,windows-subsystem-for-linux,docker-volume,Docker,Windows Subsystem For Linux,Docker Volume,在windows托管的ubuntu容器中列出包含200K文件的共享卷中目录的内容会遇到问题 如何繁殖 在Windows 10上安装Docker Desktop 2.2.0.3(42716)稳定版 配置docker以在WSL(Ubuntu 16发行版)中工作 在tcp://localhost:2375 无TLS时 在WSL中,定义环境变量DOCKER\u HOST=localhost:2375 在WSL中,在[automount]部分的/etc/WSL.conf中,定义root=/ 在Wind

在windows托管的ubuntu容器中列出包含200K文件的共享卷中目录的内容会遇到问题

如何繁殖
  • 在Windows 10上安装Docker Desktop 2.2.0.3(42716)稳定版
  • 配置docker以在WSL(Ubuntu 16发行版)中工作
    • tcp://localhost:2375 无TLS时
    • 在WSL中,定义环境变量
      DOCKER\u HOST=localhost:2375
    • 在WSL中,在
      [automount]
      部分的
      /etc/WSL.conf
      中,定义
      root=/
  • 在Windows主机上创建一个包含200000个文件(即使是小文件)的文件夹。e、 g.
    c:/temp
  • 运行docker容器,将主机上的c:/temp映射到容器中的/opt,如下所示:
    docker run-it-v/c/temp:/opt ubuntu bash
  • 在容器的bash提示符中运行
    cd/opt
    ,然后运行
    ls
  • 预期结果
    ls
    命令将开始列出c:/temp文件夹中的所有文件。
    这可能需要一些时间,但它几乎会立即开始

    实际结果 未打印任何内容,外壳不响应。
    此外,CTR C不会中断
    ls
    命令。

    我发现停止容器的唯一方法是重新启动Docker Desktop

    FYI--
    ls
    ,默认情况下进行排序;因此,在开始打印任何内容之前,它需要收回整个列表<代码>查找-相比之下,maxdepth 1将以操作系统返回的速度打印内容。请注意,根据Docker和主机之间使用的远程处理层,这可能仍然很慢(可以想象,该工具中的某些内容可能会增加对完整目录迭代的要求,而
    find
    则没有);但它将更接近检索内容的实际性能。我尝试了你的建议。“.”立即打印出来,然后外壳像以前一样卡住了。这告诉我们一些关于该行为的有用信息——延迟发生在将名字返回到来宾内核之前。此外,它通常意味着该协议相当重——不仅通过系统调用直接代理,在这种情况下,它可以立即返回,而且请求完整列表。我在Docker for Windows repo上发布了一个新问题: