【问题标题】:docker command does not work in PowerShell (Windows 10 Home)?docker 命令在 PowerShell(Windows 10 家庭版)中不起作用?
【发布时间】:2020-04-17 07:52:26
【问题描述】:

好吧,I am trying to instal minikube in a PC with Windows 10 Home

我正在学习本教程:

https://learnk8s.io/blog/installing-docker-and-kubernetes-on-windows

我现在应该在 PowerShell 中执行以下命令:

@FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i

我收到了这个错误:

En línea: 1 Carácter: 7
+ @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
+       ~
Debe proporcionar una expresión de valor después del operador '/'.
En línea: 1 Carácter: 7
+ @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
+       ~
Token 'f' inesperado en la expresión o la instrucción.
En línea: 1 Carácter: 53
+ @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
+                                                     ~
Token no reconocido en el texto de origen.
En línea: 1 Carácter: 1
+ @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
+ ~~~~
El operador de expansión '@' no se puede usar para hacer referencia a variables en una expresión. '@FOR' solamente se
puede usar como argumento para un comando. Para hacer referencia a variables en una expresión, use '$FOR'.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

所以,我决定使用 cmd 继续本教程。终于可以完成教程了。

我认为第一个序列命令在 PowerShell 中由于与语法相关的问题而失败。但我不明白为什么docker ps 命令失败 在 PowerShell 中。我在 PowerShell 中收到以下错误:

error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

我想知道为什么 docker 命令在我的 PowerShell 窗口中不起作用?

PD:我以管理员权限打开 PowerShell。

更新 1

根据@BACON 的建议,我执行这个命令序列:

@FOR /f "tokens=*" %i IN ('minikube docker-env') DO %i

但我得到一个错误:

更新 2

正如用户在 cmets 中所说。教程中提到的用于启动 minikube 的命令在 cmd 中有效,但不适用于 PowerShell。如果我们考虑到这一点,本教程可以成功完成。

【问题讨论】:

  • @FOR... 命令特定于 Command Prompt 解释器,而不是 PowerShell,因此本教程在这方面是错误的。虽然,如果您遇到并随后解决了该问题,那么它实际上并不需要出现在问题中。更有用的是指定您执行了哪些命令、在哪个 shell 中以及作为哪个用户执行。
  • 我遵循教程。我对这个命令有疑问:docker ps。在 PowerShell 中执行时出现错误
  • 我明白这一点,但不必访问外部网站即可查看您正在运行的命令。请参阅minimal reproducible example,其中说“提供所有部分......以重现您的问题在问题本身中”。您还说您在中途切换了 shell,这就是为什么我建议您不仅明确列出到目前为止您已执行的确切命令,而且还要列出在哪个 shell 中以及作为哪个用户。另外,minikube docker-env 的输出是什么?教程说“请注意,每次打开新终端时都应键入上述命令”,因此在 PS 中是必需的。
  • 您正在尝试在 PowerShell 中运行批处理命令。那是行不通的。如果要使用批处理命令,请不要在 PowerShell 中执行。 powershell 等价物类似于(minikube docker-env) % { $_ }。或者将cmd 放在您尝试运行的命令前面:cmd FOR /f "tokens=*" %i IN ('minikube docker-env') DO %i
  • 关于编辑,您再次在 PowerShell 中运行 FOR 命令。正如我所说,它需要在cmd 中运行。

标签: powershell docker minikube


【解决方案1】:

好吧,我解决了我在 cmd 中运行命令的问题,而不是在 PowerShell 中。

在windows下启动docker的命令在cmd(Windows 10家庭版)下是:

@FOR /f "tokens=*" %i IN ('minikube docker-env') DO %i

如果你想在 Power Shell 中运行 docker,你应该执行这个命令:

minikube -p minikube docker-env | Invoke-Expression

就我而言,当我执行命令 minikube docker-env 时:

$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://192.168.99.101:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\Cesar\.minikube\certs"
$Env:MINIKUBE_ACTIVE_DOCKERD = "minikube"
# To point your shell to minikube's docker-daemon, run:
# & minikube -p minikube docker-env | Invoke-Expression

PD:我正在使用 minikube

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2016-11-16
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多