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)?

Eric
sumber
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
lvthillo.dll
sumber
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
Thavaprakash Swaminathan
sumber
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.

dPac
sumber
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

Glen Thompson
sumber
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

brandon
sumber
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
qwerty
sumber
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

pengguna10538706
sumber
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
kabel00
sumber