Versi di "./docker-compose.yml" tidak didukung. Anda mungkin melihat kesalahan ini karena Anda menggunakan versi file Tulis yang salah


90

Ini file docker-compose.yml saya:

version: '3.1'

services:
  a:
    image: tutum/hello-world
  b:
    image: tutum/hello-world

secrets:
  id: my_password

Jika saya menjalankan $ docker-compose-upsaya mendapatkan ini:

Versi di "./docker-compose.yml" tidak didukung. Anda mungkin melihat kesalahan ini karena Anda menggunakan versi file Tulis yang salah.

Versi docker-compose saya:

$ docker-compose --version
docker-compose version 1.11.0, build 6de1806

Ada apa disini? Bukankah versi docker-compose saya mendukung v3.1 dari spesifikasi docker-compose.yml (menurut catatan rilis , memang demikian)?


apa versi buruh pelabuhan Anda (bukan buruh pelabuhan menulis)?
lvthillo

Docker versi 1.13.0, build 49bf474
Eric

ini docker-composedan tidakdocker compose
Abdou Tahiri

@AbdouTahiri CLI adalah docker-composetetapi Docker Composeadalah teknologi .. docs.docker.com/compose
lvthillo

4
Menghadapi masalah yang sama dengan versi "3.6". Pekerja pelabuhan saya adalah18.03.0-ce, build 0520e24
Rajeev Ranjan

Jawaban:


90

Anda melakukan segalanya dengan benar dan seharusnya berhasil. Tetapi ada bug di docker-compose 1.11.0 yang tidak mengenali format file 3.1 sebagai valid. (3.0 bekerja).

Sudah ada rilis baru dari docker-compose (1.11.1) yang menyertakan perbaikan bug:

Perbaikan kerusakan

Memperbaiki bug di mana format file 3.1 tidak dikenali sebagai valid oleh parser Tulis

Jadi saya akan merekomendasikan untuk mengupgrade versi docker-compose Anda jika Anda ingin menggunakan format file 3.1.

Saat ini, cara teraman untuk mengupgrade docker-compose adalah dengan menghapusnya dan menginstalnya kembali.

rm /usr/local/bin/docker-compose

Instal ulang:

curl -L https://github.com/docker/compose/releases/download/1.11.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4

Sekarang tidak ada lagi kesalahan pada format file. (Saya tidak menguji dengan .yml Anda).

docker-compose up
Starting compose_a_1
Starting compose_b_1

3
Terima kasih. Untuk beberapa alasan, dosis cmd curl Anda tidak berfungsi untuk saya di ubuntu 16.04. Saya kemudian memperbarui ke versi docker-compose terbaru mengikuti panduan di situs web resmi di sini. docs.docker.com/compose/install , yang kurang lebih sama dengan di atas. Tapi di curl cmd, ">" ubah menjadi "-o".
zhihong

8
Bug juga menyerang versi 1.8.0; versi 1.16.1 sudah tersedia dan bekerja dengan sempurna di Ubuntu 16.04. Perbaiki saja komponen versi jalur di atas, tidak dapat menempelkannya dengan jelas di komentar ini karena tanda kutip balik: /
chrisinmtown

Tidak tahu alasannya tetapi curlperintah tidak dijalankan. .. mengatakan izin ditolak.
Deepak Sharma

1
Mereka yang menghadapi kesalahan dalam menjalankan curlperintah, coba ini: docs.docker.com/compose/install/#install-compose
Deepak Sharma

1
@DeepakSharma Anda harus menjalankan perintah curl dan chmod sebagai pengguna root (atau gunakan sudo)
lvthillo

51

Saya telah menyelesaikan masalah dengan mengupgrade docker-compose.

Ikuti langkah-langkah di bawah ini untuk memutakhirkan docker-compose di ubuntu16.04

Langkah 1:

$which docker-compose
/usr/bin/docker-compose

Langkah 2:

$sudo rm /usr/bin/docker-compose

langkah3:

curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

step4:

chmod +x /usr/bin/docker-compose

Ini bekerja dengan baik untuk saya di Elementary OS Loki (0.4.1).
J. Afarian

6
Karena versi buruh pelabuhan sering berubah, lihat di sini untuk menginstal versi buruh pelabuhan terbaru github.com/docker/compose/releases
DrB

1
Versi yang saya dapatkan dari apt-get adalah 1,17, itu juga mengalami masalah ini (Linux Mint 19). Saya mengunduh 1.24.1 dengan cara yang mirip dengan tata letak langkah-langkah ini, tampaknya berfungsi. Terima kasih!
Will Buck

1
Setelah menghapusnya, sudo apt install docker-composeBeri tahu saya bahwa saya sudah memiliki versinya, dan docker-compose upberi tahu saya bahwa saya belum menginstal docker-compose. Mengapa kalian tidak menggunakan apt? Saya punya dua masalah sekarang.
Ambroise Rabier

15

Jika versi file Anda adalah 3.7 dan Anda mendapatkan kesalahan berikut:

ERROR: Version in "./config.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.

Inilah solusinya: -

(1) sudo apt-get remove docker-composeATAUsudo rm /usr/local/bin/docker-compose

(2) sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(3) sudo chmod +x /usr/local/bin/docker-compose

(4) sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Saya harap ini menyelesaikan masalah.


4

Jika menggunakan linux / ubuntu , Ini mungkin jelas tapi hati-hati Anda menjalankannya sebagai root misalnya

docker-compose -v

Memberi

docker-compose version 1.8.0, build unknown

vs.

sudo docker-compose -v 

Memberi

docker-compose version 1.17.1, build 6d101fb

Pastikan juga docker-compose dan docker-machine adalah yang terbaru seperti status @lvthillo


Ini harus menjadi jawaban yang benar. Saya di Ubuntu, saya harus menggunakan perintah SUDO untuk bekerja
brunoramonalmeida

sudo docker-compose -v memberi saya versi docker-compose 1.8.0, build tidak diketahui
Julien

Apa itu dengan sudo?
Glen Thompson

-1. Sudo buruk. Berikut alternatifnya: docs.docker.com/install/linux/linux-postinstall/…
Ligemer

Tambahan yang bagus, meskipun saya tidak akan mengatakan itu "buruk". Jangan ragu untuk mengedit jawaban untuk memasukkannya sebagai tambahan.
Glen Thompson

2

Saya telah melakukannya docker-compose --versionsebelum menerapkan solusi lvthillo dan saya masih mendapatkan versi usang yang muncul. Ternyata saya perlu menghapus daftar hash yang dipegang oleh bash shell saya. hash -r... semoga bermanfaat untuk orang lain


2

coba uninstal versi lama dan instal ulang.

sudo apt remove docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
reboot

harus mencetak

docker-compose --version
docker-compose version 1.22.0, build 1719ceb

3
Mengapa me-reboot mesin hanya karena Anda mendownload file?
Soren Bjornstad

1

Kami tidak dapat memberi tahu Anda tanpa melihat kesalahan tertentu terlebih dahulu memeriksanya dengan menjalankan perintah ini

docker build . ketika Anda mendapatkan kesalahan, maka cari di google dalam kasus saya itu adalah kesalahan izin ketika saya mencobanya dengan sudo berhasil.

Semoga bisa membantu Anda


0

Di osx 10.12.6 sierra

Langkah-langkah untuk v1.22 atau lebih tinggi

Saya memiliki masalah / ketidakcocokan tertentu di mana saya tidak ingin memutakhirkan pekerja galangan sepenuhnya. Saya terjebak saat ini di buruh pelabuhan 17.06.0-ce-mac18. Jadi saya hanya ingin mengupgrade docker-compose dan tidak ada yang lain.

Langkah saya:

  • Identifikasi lokasi docker-compose: which docker-compose
  • Identifikasi versi docker-compose: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • backup sebelumnya docker-compose ?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • ubah dengan curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • jika Anda perlu menentukan versi terbaru cukup periksa https://github.com/docker/compose/releases dan ganti versi di atas dengan yang terbaru.
  • verifikasi versi: docker-compose --version=docker-compose version 1.22.0, build f46880f
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.