【问题标题】:Docker exec -it <containerid> dir doesn't work. Why? How to get directory info?Docker exec -it <containerid> 目录不起作用。为什么?如何获取目录信息?
【发布时间】:2020-01-07 18:05:08
【问题描述】:

我对 docker 很陌生。 我也在使用 Docker for Windows(即 Image 和 Container 用于 Windows 操作系统)。

我正在尝试获取所有文件夹和子文件夹的列表,以解决我遇到的另一个问题。我阅读了几篇文章和博客,似乎我应该能够运行

docker exec -it <container id> dir

获取信息,因为它允许我对容器运行命令。 我什至跑了

docker exec -it f83eb1533b67 help

它给了我一个命令列表(因为没有人告诉什么是可接受的'命令'......)并且它被列出了。但是当我运行 DIR 命令时收到以下消息

PS P:\docker\tmp\SqlServerSetup> `docker exec -it f83eb1533b67 dir`

container f83eb1533b671b4462b8a1562da7343185b2dd27e94ff360e0230969d432ec37 encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2)
                                                                                                                                                                                                        [Event Detail:  Provider: 00000000-0000-0000-0000-000000000000] extra info: {"CommandLine":"dir","WorkingDirectory":"C:\\","Environment":{"ACCEPT_EULA":"Y","attach_dbs":"[]","sa_password":"Pass1.4DBAs","sa_password_path":"C:\\ProgramData\\Docker\\secrets\\sa-password"},"EmulateConsole":true,"CreateStdInPipe":true,"CreateStdOutPipe":true,"ConsoleSize":[0,0]}
PS P:\docker\tmp\SqlServerSetup>

请注意:我不想保留卷。似乎该选项适用于试图重用数据的人。

更新: 这是我用来创建容器的语句:

docker run -p 1433:1433 -e sa_password=Pass1.4DBAs -e ACCEPT_EULA=Y -p 11433:1433 --name sqlTraining --cap-add SYS_PTRACE -d microsoft/mssql-server-windows-developer 它工作正常。容器已创建,但我想查看该容器中的文件系统。

【问题讨论】:

  • 你的 Dockerfile 的基础是什么?
  • 你用的是哪张图片?
  • docker exec -it f83eb1533b67 /bin/bash
  • 容器是基于 Windows 还是基于 Linux?
  • 我没有确切的声明,但我知道它使用了FROM microsoft/mssql-server-windows-developer。当我可以在几个小时内重新登录时,我将使用确切的命令更新原始问题。我想最终达到创建 dockerfile 的目的,我找到了一个教程,但它适用于 Linux 容器,所以我不得不针对 Windows 进行修改。如果我能在这个问题上得到帮助,它将帮助我完成创建 dockerfile,因为我无法告诉文件(数据库文件)的位置

标签: windows docker docker-for-windows docker-desktop


【解决方案1】:

尝试运行:

docker exec -it <container id> sh

启动交互式 shell 控制台。这应该可以帮助您进行调试。

【讨论】:

  • Windows 通常没有 Bash,它最多有 cmd.exe 或 PowerShell。
  • 哦,我没注意到,镜像容器可能不是基于Linux的...
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 2010-11-01
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多