在没有 sudo 的情况下运行时,Docker 插件不会被识别为命令

Lup*_*lum 6 linux ubuntu docker docker-compose buildx

我在跑

  • Ubuntu 20.04.5 LTS
  • Docker版本23.0.1,构建a5ee5b1

运行命令

docker build -t some:other Dockerfile
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

unknown shorthand flag: 't' in -t
Run Code Online (Sandbox Code Playgroud)

docker build
Run Code Online (Sandbox Code Playgroud)

下列:

docker: 'buildx' is not a docker command.
Run Code Online (Sandbox Code Playgroud)

我按照存储库中的建议安装了 Docker:说明

其他插件也不起作用(docker compose也无法识别)。即便如此,docker info显示

  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.2
    Path:     /home/jpartanen/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.16.0
    Path:     /home/jpartanen/.docker/cli-plugins/docker-compose
  scan: Docker Scan (Docker Inc.)
Run Code Online (Sandbox Code Playgroud)

Docker 在用户组的帮助下无需 sudo 即可运行docker,如linux-postinstall中所述。我也想在没有 sudo 的情况下运行插件。

我重新安装了 Docker 并重新启动了机器,没有任何更改。可能是什么问题呢?

Lup*_*lum 1

通过创建链接使插件可在 docker 上运行:

ln -s /usr/libexec/docker/cli-plugins/ ~/.docker/cli-plugins
Run Code Online (Sandbox Code Playgroud)

由于命令buildvs不匹配,Docker 无法识别的命令更加令人困惑buildx。这是因为Docker Engine 23.0将 Buildx 和 BuildKit 设置为 Linux 上的默认构建器。docker build别名为docker buildx build.

至于不使用sudo运行,问题可能是由于插件安装在错误的位置造成的。在我的机器上,运行命令

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Run Code Online (Sandbox Code Playgroud)

在 中安装插件,而正如此处/usr/libexec/docker/cli-plugins/所述,插件可以从(无需 sudoing)使用。$HOME/.docker/cli-plugins

一个稍微稳健的解决方案是创建如上所述的链接。