docker - “docker run --rm -v”从守护进程获取错误响应:状态码不正常,但 500
问题描述
我正在尝试使用 powershell 让以下 docker run 命令在 Windows 10 中工作。
我熟悉 Windows Ubuntu,但我需要从 powershell 运行它(不要问!)
Docker 确实有效 - 我运行了 Docker 让您执行的简单构建,以确认安装正常。在尝试以下命令时,它给了我一个巨大的错误。我怀疑它来自“-v”?我确实环顾四周,但没有发现与此类问题相关的任何实质内容。
这是我正在运行的命令:
docker run --rm -v C:\PycharmProjects\thera\docker-template\laravel-app:\app composer install
这是回应:
docker run --rm -v C:\PycharmProjects\thera\docker-template\laravel-app:\app composer install
C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: status code not OK but 500: {"Message":"Unhandled exception: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))","StackTrace":" at Windows.UI.Notifications.ToastNotifier.Show(ToastNotification notification)\r\n at Docker.WPF.PromptShareDirectory.<PromptUserAsync>d__0.MoveNext() in C:\\workspaces\\stable-2.3.x\\src\\github.com\\docker\\pinata\\win\\src\\Docker.WPF\\PromptShareDirectory.cs:line 26\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Docker.ApiServices.Mounting.FileSharing.<DoShareAsync>d__6.MoveNext() in C:\\workspaces\\stable-2.3.x\\src\\github.com\\docker\\pinata\\win\\src\\Docker.ApiServices\\Mounting\\FileSharing.cs:line 80\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Docker.ApiServices.Mounting.FileSharing.<ShareAsync>d__4.MoveNext() in C:\\workspaces\\stable-2.3.x\\src\\github.com\\docker\\pinata\\win\\src\\Docker.ApiServices\\Mounting\\FileSharing.cs:line 47\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Docker.HttpApi.Controllers.FilesharingController.<ShareDirectory>d__2.MoveNext() in C:\\workspaces\\stable-2.3.x\\src\\github.com\\docker\\pinata\\win\\src\\Docker.HttpApi\\Controllers\\FilesharingController.cs:line 21\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}.
解决方案
我想到了。
-v 将本地目录中的位置安装到正在运行的容器中。冒号的左侧是主机上的位置,右侧是容器中现在将链接在一起的位置。
问题是,当您在 Windows 中运行 Docker 时,您需要专门授予 Docker 访问该位置的权限。要让 Docker 访问您计算机的驱动器,请右键单击任务栏中的 Docker 图标,然后单击“设置...”并查找“文件共享”部分。添加您要分享的位置,您就可以开始了!!!
就我而言,我将“C:\PycharmProjects\thera\docker-template\laravel-app”添加到 Docker 文件共享部分,我很高兴!
我运行后让它工作的命令是 -
docker run --rm -v C:\Users\ernest.vanduyne\PycharmProjects\tmp:/app composer install
这将我本地驱动器上的“C:\Users\ernest.vanduyne\PycharmProjects\tmp”安装到容器中的“\app”。
推荐阅读
- java - how do i run cmd command on android programmatically with java code
- algorithm - Vector insertion in Binary Search Tree in linear time complexity
- c++ - O(n) 和 O(log n) 时间的三次根算法
- c - 安装 MSYS(2) 后如何简单地使用纯 Mingw GCC?
- bash - bash中命令的执行顺序是什么?
- java - 使用 ASyncTask 时数组未显示在 ArrayAdapter 中
- python - 在多级数据框中选择特定的索引单元格值
- java - 当我的数据包含0x0a和0x0d时,如何从android中的BLE读取全长数据?
- c++11 - 使用数组从 fstream 读取和写入?
- c# - 获取 .wav 文件 C# 的频谱线