使用 Snap 安装的 Docker-compose 在 YML 文件上出现错误

使用 Snap 安装的 Docker-compose 在 YML 文件上出现错误

我已经使用 Snap Package Manager 安装了 docker。它说它有最新版本,但 docker-compose 给出语法错误,看起来它不是最新版本。

示例 docker-compose.yml

version: '3.9'

services:

  documentation:
    image: nginx:latest
    container_name: docs
    volumes:
      - ./site:/var/www/html
      - ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./var/log/nginx:/var/log/nginx
    networks:
      my-net:
        ipv4_address: 172.30.0.110

networks:
  my-net:
    external: true
    name: my-net

在 DigitalOcean 上

$ docker-compose --version
docker-compose version 1.27.4, build 40524192

docker-compose config 命令看起来不错。

在我的 Ubuntu 上使用 Snap 中的 Docker

cops@emdev01:~/cops/documentation$ docker-compose --version
docker-compose version 1.25.5, build unknown

docker-compose config 命令给出以下输出:

$ docker-compose config
ERROR: Version in "./docker-compose.yml" is unsupported. 
You might be seeing this error because you're using the wrong Compose file version. 
Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions 
under the `services` key, or omit the `version` key and place your service definitions at the 
root of the file to use version 1.

For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

使用的docker-compose:

$ which docker-compose
/snap/bin/docker-compose

信息显示如下:

$ sudo snap info docker
name:      docker
summary:   Docker container runtime
publisher: Canonical✓
store-url: https://snapcraft.io/docker
contact:   https://github.com/docker-snap/docker-snap/issues?q=
license:   (Apache-2.0 AND MIT AND GPL-2.0)
description: |

[SNIP]

services:
  docker.dockerd: simple, enabled, active
snap-id:      sLCsFAO8PKM5Z0fAKNszUOX0YASjQfeZ
tracking:     latest/stable
refresh-date: today at 09:46 UTC
channels:
  latest/stable:    20.10.8      2021-08-27 (1125) 122MB -
  latest/candidate: 20.10.8      2021-09-29 (1234) 121MB -
  latest/beta:      20.10.9      2021-10-08 (1310) 122MB -
  latest/edge:      20.10.9      2021-11-09 (1399) 122MB -
  17.03/stable:     17.03.2-ce-1 2017-07-20  (159)  42MB -
  17.03/candidate:  17.03.2-ce-1 2017-06-30  (159)  42MB -
  17.03/beta:       ↑
  17.03/edge:       17.03.2-ce-1 2017-06-30  (159)  42MB -
installed:          20.10.8                 (1125) 122MB -
adminlinux@emdev01:~$

因此,上面看起来就像我正在使用随 Snap 安装的最新 Docker。

那么为什么我会在docker-compose文件上收到错误?

答案1

通过卸载 Docker 的 Snap 版本并使用 apt 以传统方式安装 Docker 来解决这个问题。

原因是 Snap 做了一些奇怪的事情。@muru 告诉我 docker-compose 不是 Snap 软件包的一部分。但有一个 /snap/bin/docker-compose。这是一个旧版本,没有 Docker-Compose 的 Snap 软件包,更不用说较新的版本了。

因此我从 Snap 中删除了 Docker,并使用 Apt 再次安装了 Docker。

现在一切都按预期进行。

相关内容