我已经使用 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。
现在一切都按预期进行。