Zsh Docker 插件不工作

Zsh Docker Plugin not Working

我已经使用 oh-my-zsh 一段时间了,docker 插件最近因为某些原因停止工作。

我检查了我的 ~/.zshrc 文件并且包含了插件

plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting docker)

我查看了~/.oh-my-zsh/plugins/docker目录,里面有一个_docker文件。然而,当我键入 docker 并按 Tab 键时,我得到了 none 我曾经得到的自动完成快捷方式。

我可以确认我的 git 插件工作正常,但 docker 插件不行。尝试做 exec zshsource ~/.zshrc 并重新启动我的终端但没有成功。

我是不是漏掉了什么?

我认为您可能在每个插件之间遗漏了 ,'s。

plugins=(git, colored-man, colorize, github, jira, vagrant, virtualenv, pip, python, brew, osx, zsh-syntax-highlighting, docker)

或者,您可以将每个插件放在单独的行中:

plugins=(
  git
  colored-man
  colorize 
  github
  jira
  vagrant
  virtualenv
  pip
  python
  brew
  osx
  zsh-syntax-highlighting 
  docker
)

oh-my-zsh 似乎没有加载 plugins/docker/_docker 文件。您必须以另一种方式将其添加到 ~/.zshrc。 将这些行添加到您的 ~/.zshrc 文件中:

fpath+=($ZSH/plugins/docker)
autoload -U compinit && compinit

您可能想尝试删除用户主目录中的任何 .zcompdump-(...) 文件 - 在终端或某些文件浏览器上使用 rm ~/.zcompdump* 之类的东西 - 然后重新加载 .zschrc 文件与命令 source ~/.zshrc 或重新启动终端 - 以最适合您的方式为准。参见 this

然后看看有没有用

如果您使用的是 oh-my-zsh 并且自动完成功能不起作用,请按照以下步骤操作:

  1. 建立以下三个链接:

    ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
    ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
    ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
    
  2. 在 shell:

    中添加 autoload -Uz compinit; compinit.zshrc 或 运行
    echo "autoload -Uz compinit; compinit" >> .zshrc
    

对我来说,这只是我第一次需要从我的 Mac 聚光灯下启动 Docker 以便 Docker for Desktop 获得访问权限的情况需要。然后 docker version 命令工作得很好。

@youhans 的解决方案对我永久有效。您可能有权限问题,无法对 "zshrc" 进行必要的调整。我已将权限更改为 "read and write" 并将@youhans 的响应中的代码片段添加到 "zshrc" 文件的末尾。现在完成系统始终有效。

  • 以前,每当打开一个新终端时,我都必须在命令行中输入以下代码片段。

    autoload -Uz compinit && compinit

在我的例子中:Windows 10 + WSL2 + Hyper

我遇到这个错误是因为我在 Windows 上停止了 Docker...再次启动它会使错误在 Hyper 中消失(因此,也在 ZSH 中)。

没有 .zshrc 更改或要添加的其他命令。

在我的例子中,它是因为别名而发生的。我定义了 alias docker=docker.exe。 删除它再次工作。

系统与环境

  • O.S.: Windows 10 家, x64
  • Shell:Zsh(在 Gitbash 上)