ไม่รองรับเวอร์ชันใน“ ./docker-compose.yml” คุณอาจเห็นข้อผิดพลาดนี้เนื่องจากคุณใช้เวอร์ชันเขียนไฟล์ที่ไม่ถูกต้อง


92

นี่คือไฟล์ docker-compose.yml ของฉัน:

version: '3.1'

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

secrets:
  id: my_password

ถ้าฉันวิ่ง$ docker-compose-upฉันจะได้รับสิ่งนี้:

ไม่รองรับเวอร์ชันใน "./docker-compose.yml" คุณอาจเห็นข้อผิดพลาดนี้เนื่องจากคุณใช้เวอร์ชันเขียนไฟล์ที่ไม่ถูกต้อง

เวอร์ชันเขียนเทียบท่าของฉัน:

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

เกิดอะไรขึ้นที่นี่? เวอร์ชันเขียนเทียบท่าของฉันไม่ควรรองรับ v3.1 ของข้อกำหนด docker-compose.yml (ตามบันทึกประจำรุ่น ) หรือไม่


นักเทียบท่าของคุณเป็นเวอร์ชันอะไร (ไม่ใช่นักเทียบท่าเขียน)
lvthillo

Docker เวอร์ชัน 1.13.0 สร้าง 49bf474
Eric

มันdocker-composeไม่ใช่docker compose
Abdou Tahiri

@AbdouTahiri CLI เป็นdocker-composeแต่Docker Composeเทคโนโลยี .. docs.docker.com/compose
lvthillo

4
"3.6"หันหน้าไปทางปัญหาเดียวกันกับรุ่น นักเทียบท่าของฉันคือ18.03.0-ce, build 0520e24
Rajeev Ranjan

คำตอบ:


92

คุณกำลังทำทุกอย่างถูกต้องและควรได้ผล แต่มีข้อผิดพลาดใน Docker-compose 1.11.0 ซึ่งไม่รู้จักรูปแบบไฟล์ 3.1 ว่าถูกต้อง (3.0 ผลงาน)

มี Docker-compose รุ่นใหม่ (1.11.1) ซึ่งรวมถึง bugfix:

แก้ไขข้อผิดพลาด

แก้ไขข้อบกพร่องที่รูปแบบไฟล์ 3.1 ไม่ได้รับการยอมรับว่าถูกต้องโดยโปรแกรมแยกวิเคราะห์การเขียน

ดังนั้นฉันขอแนะนำให้อัปเกรดเวอร์ชันเขียนเทียบท่าของคุณหากคุณต้องการใช้รูปแบบไฟล์ 3.1

ในขณะนี้วิธีที่ปลอดภัยที่สุดในการอัปเกรด Docker-compose คือการลบและติดตั้งใหม่

rm /usr/local/bin/docker-compose

ติดตั้งใหม่:

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

ตอนนี้ไม่มีข้อผิดพลาดในรูปแบบไฟล์อีกต่อไป (ฉันไม่ได้ทดสอบกับ .yml ของคุณ)

docker-compose up
Starting compose_a_1
Starting compose_b_1

3
ขอบคุณ. ด้วยเหตุผลบางประการปริมาณ curl cmd ของคุณไม่ได้ผลสำหรับฉันใน Ubuntu 16.04 จากนั้นฉันอัปเดตเป็นเวอร์ชันเขียนเทียบท่าล่าสุดตามคำแนะนำในเว็บไซต์อย่างเป็นทางการที่นี่ docs.docker.com/compose/installซึ่งจะมากหรือน้อยเหมือนกับข้างต้น แต่ใน curl cmd ให้ ">" เปลี่ยนเป็น "-o"
zhihong

8
ข้อผิดพลาดยังส่งผลต่อเวอร์ชัน 1.8.0; เวอร์ชัน 1.16.1 มีประโยชน์และทำงานได้อย่างสมบูรณ์บน Ubuntu 16.04 เพียงแก้ไขส่วนประกอบเวอร์ชันของเส้นทางด้านบนไม่สามารถวางได้อย่างชัดเจนในความคิดเห็นนี้เนื่องจากเครื่องหมายอัญประกาศย้อนกลับ: /
chrisinmtown

ไม่รู้เหตุผล แต่curlคำสั่งไม่ดำเนินการ .. บอกว่าไม่อนุญาต
Deepak Sharma

1
ผู้ที่กำลังเผชิญกับข้อผิดพลาดในการเรียกใช้curlคำสั่งลองสิ่งนี้: docs.docker.com/compose/install/#install-compose
Deepak Sharma

1
@DeepakSharma คุณต้องดำเนินการคำสั่ง curl และ chmod ในฐานะผู้ใช้รูท (หรือใช้ sudo)
lvthillo

53

ฉันได้แก้ไขปัญหาแล้วโดยการอัปเกรด Docker-compose

ทำตามขั้นตอนด้านล่างเพื่ออัปเกรด Docker-compose ใน ubuntu16.04

ขั้นตอนที่ 1:

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

ขั้นตอนที่ 2:

$sudo rm /usr/bin/docker-compose

ขั้นที่ 3:

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

ขั้นตอนที่ 4:

chmod +x /usr/bin/docker-compose

สิ่งนี้ใช้ได้ดีสำหรับฉันใน Elementary OS Loki (0.4.1)
J.Afarian

6
เนื่องจากเวอร์ชันของนักเทียบท่ามีการเปลี่ยนแปลงบ่อยครั้งให้ดูที่นี่เพื่อติดตั้งนักเทียบท่ารุ่นล่าสุดgithub.com/docker/compose/releases
DrB

1
เวอร์ชันที่ฉันได้รับจาก apt-get คือ 1.17 แต่ก็มีปัญหานี้เช่นกัน (Linux Mint 19) ฉันดาวน์โหลด 1.24.1 คล้ายกับวิธีการจัดวางขั้นตอนเหล่านี้ดูเหมือนจะใช้งานได้ ขอบคุณ!
Will Buck

1
หลังจากลบแล้วsudo apt install docker-composeบอกฉันว่าฉันมีเวอร์ชันอยู่แล้วและdocker-compose upบอกฉันว่าฉันไม่ได้ติดตั้งนักเทียบท่าเขียน ทำไมพวกคุณไม่ใช้ apt? ตอนนี้ฉันมีสองประเด็น
Ambroise Rabier

18

หากไฟล์ของคุณเป็นเวอร์ชัน 3.7 และคุณได้รับข้อผิดพลาดต่อไปนี้:

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.

นี่คือวิธีแก้ปัญหา: -

(1) sudo apt-get remove docker-composeหรือsudo 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

ฉันหวังว่านี่จะช่วยแก้ปัญหาได้


คุณอาจต้องการไปตรวจสอบเวอร์ชันล่าสุดที่github.com/docker/compose/releasesในขณะนี้เวอร์ชันคือ 1.27.4
FrankZhu

4

หากใช้linux / ubuntuสิ่งนี้อาจชัดเจน แต่ระวังให้ดีว่าคุณรันเป็น root เช่น

docker-compose -v

ให้

docker-compose version 1.8.0, build unknown

เทียบกับ

sudo docker-compose -v 

ให้

docker-compose version 1.17.1, build 6d101fb

ตรวจสอบให้แน่ใจว่านักเทียบท่าเขียนและนักเทียบท่าเป็นรุ่นล่าสุดเป็นสถานะ@lvthillo


นี่น่าจะเป็นคำตอบที่ใช่ ฉันอยู่ใน Ubuntu ฉันต้องใช้คำสั่ง SUDO เพื่อทำงาน
brunoramonalmeida

sudo docker-compose -v ให้ฉันนักเทียบท่าเขียนเวอร์ชัน 1.8.0 สร้างไม่ทราบ
Julien

นั่นคือ sudo?
Glen Thompson

-1. ซูโดแย่แล้ว นี่เป็นทางเลือก: docs.docker.com/install/linux/linux-postinstall/…
Ligemer

ดีเพิ่มแม้ว่าฉันจะไม่บอกว่ามัน "แย่" อย่าลังเลที่จะแก้ไขคำตอบเพื่อรวมเป็นส่วนเพิ่มเติม
Glen Thompson

2

ฉันได้ทำdocker-compose --versionก่อนที่จะใช้โซลูชันของ lvthillo และฉันก็ยังได้รับเวอร์ชันที่ล้าสมัยปรากฏขึ้น ปรากฎว่าฉันต้องล้างรายการแฮชเชลล์ของฉันที่ถืออยู่ hash -r... หวังว่าจะเป็นประโยชน์สำหรับคนอื่น ๆ


2

ลองถอนการติดตั้งเวอร์ชันเก่าและติดตั้งใหม่

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

ควรพิมพ์ออกมา

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

3
ทำไมต้องรีบูตเครื่องเพียงเพราะคุณดาวน์โหลดไฟล์
Soren

1

เราไม่สามารถบอกคุณได้โดยไม่ต้องดูข้อผิดพลาดนั้นก่อนอื่นให้ตรวจสอบด้วยการเรียกใช้คำสั่งนี้

docker build . เมื่อคุณได้รับข้อผิดพลาดให้ค้นหาใน Google ในกรณีของฉันมันเป็นข้อผิดพลาดการอนุญาตเมื่อฉันลองใช้ sudo มันใช้งานได้

หวังว่ามันจะช่วยคุณได้


0

บน osx 10.12.6 sierra

ขั้นตอนสำหรับ v1.22 หรือสูงกว่า

ฉันมีปัญหาเฉพาะ / ความเข้ากันไม่ได้ซึ่งฉันไม่ต้องการอัพเกรดนักเทียบท่าอย่างสมบูรณ์ ตอนนี้ฉันติดอยู่บนนักเทียบท่า 17.06.0-ce-mac18 ดังนั้นฉันแค่ต้องการอัปเกรดนักเทียบท่าและไม่มีอะไรอื่น

ขั้นตอนของฉัน:

  • ระบุตำแหน่งของนักเทียบท่า: which docker-compose
  • ระบุเวอร์ชันเขียนเทียบท่า: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • สำรองข้อมูลนักเทียบท่าก่อนหน้านี้?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • แทนที่ด้วย curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • หากคุณต้องการตรวจสอบเวอร์ชันล่าสุดให้ตรวจสอบhttps://github.com/docker/compose/releasesและแทนที่เวอร์ชันด้านบนด้วยเวอร์ชันล่าสุด
  • ตรวจสอบเวอร์ชัน: docker-compose --version=docker-compose version 1.22.0, build f46880f
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.