J'utilise docker compose comme suit:
version: '3.7'
services:
couchdb:
image: "ibmcom/couchdb3:preview"
container_name: couch-api-test
ports:
- "5984:5984"
et voici ma version docker:
+ docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:10:01 2018
OS/Arch: linux/AMD64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:08:31 2018
OS/Arch: linux/AMD64
Experimental: false
et ma version docker-compose est:
docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4
Lorsque j'exécute mon docker-compose sur mon serveur ubuntu 16, j'obtiens ceci:
client version 1.38 is too new. Maximum supported API version is 1.37", "stderr_lines": ["client version 1.38 is too new. Maximum supported API version is 1.37"
Quelqu'un peut-il faire la lumière là-dessus?
Appels d'API effectués par le docker-compose
client sont versionnés pour garantir que les clients ne se cassent pas. Par exemple, pour créer un conteneur, il crée un POST
pour:
/v1.36/containers/create?name=...
La version API utilisée pour les appels est basée sur la directive version
dans le docker-compose.yml
fichier. Je n'ai pas pu trouver dans la documentation la correspondance entre le format de fichier docker-compose et l'API mais je suppose que pour la version 3.7, la version de l'API est 1.38.
La version du moteur docker 18.03.0-ce est compatible avec le format de fichier de composition jusqu'à 3.6 et la version d'API 1.37 selon cette matrice de compatibilité: Versions de fichier de composition et mise à nivea
Le problème est que le client docker-compose est plus récent que le moteur et qu'il comprend le format 3.7 mais ce format est incompatible avec le moteur. Pour faire fonctionner les choses, utilisez version: '3.6'
ou mettez à jour le moteur vers la version 18.06.0+
J'espère que cela t'aides.