ติดตั้ง Docker แล้ว แต่ Docker Compose ไม่ใช่? ทำไม?


127

ฉันได้ติดตั้งนักเทียบท่าบน centos 7 แล้วโดยเรียกใช้คำสั่งต่อไปนี้

curl -sSL https://get.docker.com/ | sh
systemctl enable docker && systemctl start docker
docker run hello-world

หมายเหตุ: helloworld ทำงานได้อย่างถูกต้องและไม่มีปัญหา

อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ docker-compose (มี docker-compose.yml อยู่และถูกต้อง) มันทำให้ฉันมีข้อผิดพลาดใน Centos เท่านั้น (เวอร์ชัน Windows ใช้งานได้ดีสำหรับไฟล์ docker-compose)

/usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found

5
สนุกมากพอสำหรับ Windows & Mac ทุกอย่างถูกโหลดและพร้อมใช้งานในขณะที่ผู้ใช้ Linux ต้องผ่านความเบื่อหน่ายในการพิมพ์และติดตั้งสิ่งต่างๆแยกกันและหาสิ่งต่างๆออกมา (ซึ่งแน่นอนว่าสนุก)
killjoy

คำตอบ:


277

คุณต้องติดตั้ง Docker Compose ด้วย ดูคู่มือ นี่คือคำสั่งที่คุณต้องดำเนินการ

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

4
เมื่อเรียกใช้บรรทัดที่สองฉันได้รับคำตอบ:mv: rename ./docker-compose to /usr/bin/docker-compose: Operation not permitted
kuanb

4
@kuanb ถ้ามันบอกว่าไม่อนุญาตให้ตรวจสอบว่าคุณมีสิทธิ์ sudo เต็มรูปแบบ
killstreet

สำหรับตอนนี้เวอร์ชัน 1.7.0 นั้นเก่าแล้ว อ้างอิงจากdocs.docker.com/compose/installเวอร์ชันใหม่คือ 1.11.2 หมายความว่าแทนที่จะใช้ curl -L github.com/docker/compose/releases/download/1.7.0/…uname -s - uname -m> ./docker-compose ควรใช้ curl -L github.com/docker/compose/releases/download/ 1.11.2 / …uname -s - uname -m> ./docker-compose
Yuriy Zaletskyy

1
ตรวจสอบให้แน่ใจว่าลิงก์ที่ชี้ไปยังรุ่น GitHub ไม่ล้าสมัย! ตรวจสอบรุ่นล่าสุดบน GitHub คุณสามารถดาวน์โหลดไฟล์ล่าสุดจากเบราว์เซอร์ได้เช่นกันจากนั้นเพียงแค่ย้ายและให้สิทธิ์ปฏิบัติการสำหรับมัน
totymedli

1
ฉันยังคงเรียนรู้เกี่ยวกับนักเทียบท่า แต่อย่างที่ฉันเข้าใจว่านักเทียบท่าไม่ควรใช้สำหรับการติดตั้งใหม่เนื่องจากคุณสมบัติทั้งหมดของมันถูกรวมเข้ากับนักเทียบท่าหลักด้วยdocker stackและฝูงนักเทียบท่า vsupalov.com/difference-docker-compose-and-docker-stack บางทีคำตอบนี้ควรพูดถึงสิ่งนั้นตามที่ปรากฏเป็นอันดับแรกใน Google เมื่อมองหานักเทียบท่า
Eloims

40

ฉันกำลังติดตั้งบน Raspberry Pi 3 ด้วย Raspbian 8 วิธี curl ล้มเหลวสำหรับฉัน (มีline 1: Not: command not foundข้อผิดพลาดเมื่อขอdocker-compose --version) และการแก้ปัญหาของ @ sunapi386 ดูเหมือนจะล้าสมัยเล็กน้อยดังนั้นฉันจึงลองสิ่งนี้ซึ่งได้ผล:

ขั้นแรกทำความสะอาดสิ่งต่างๆจากความพยายามครั้งก่อน:

sudo rm /usr/local/bin/docker-compose
sudo pip uninstall docker-compose

จากนั้นทำตามคำแนะนำนี้อีกครั้งนักเทียบท่า-เขียนบน Rpi :

sudo apt-get -y install python-pip
sudo pip install docker-compose

สำหรับฉัน (ในวันที่ 1 พฤศจิกายน 2017) ผลลัพธ์ดังต่อไปนี้docker-compose --version:

docker-compose version 1.16.1, build 6d1ac219

6
โซลูชันของคุณทำงานได้อย่างสมบูรณ์! หากคุณไม่ต้องการใช้ Docker-compose เวอร์ชันล่าสุดคุณยังสามารถใช้apt-get install docker-composeไฟล์. แน่นอนว่าสิ่งนี้ต้องการให้คุณเพิ่มที่เก็บนักเทียบท่าลงใน source.list ของ apt ของคุณ (สคริปต์การติดตั้งจาก get.docker.com จะดำเนินการให้คุณโดยอัตโนมัติ) อย่างไรก็ตามใน Raspberry Pi 3 ของฉันกับ Raspian Stretch Lite สิ่งนี้ส่งผลให้เป็นเวอร์ชันเก่าจริงๆ: docker-compose version 1.8.0, build unknown. เวอร์ชันนี้เก่ามากจนรองรับเฉพาะรูปแบบไฟล์ docker-compose เวอร์ชัน 2 เท่านั้น
robert

สุดยอดสิ่งนี้ช่วยฉันในการรับข้อผิดพลาดของนักเทียบท่าคอมพ์บน AWS ขอบคุณ
Laser Hawk

1
ฉันมีปัญหาบางอย่างและใช้ 'apt purge' และ 'pip uninstall' สำหรับนักเทียบท่าเขียนแล้วติดตั้งใหม่อีกครั้ง (ไม่แน่ใจว่าหนึ่งหรือทั้งสองอย่าง) แต่ส่วนสำคัญของการแก้ปัญหาก็คือ: pip install --upgrade docker-py
mirek

ที่สมบูรณ์แบบ! ไม่มีการตรวจสอบ curl, chmod และ version เพียงแค่ติดตั้งเวอร์ชันล่าสุดโดยอัตโนมัติ ควรยอมรับเป็นคำตอบ
Cherry

มีข้อผิดพลาดมากมายเมื่อใช้ pip เพื่อติดตั้ง docker-compose ถ้าคุณทำเกินไปลองใช้คำตอบนี้stackoverflow.com/a/43012312/430773
Vik

10

ฉันกำลังติดตั้งบน Raspberry Pi 3 บน Raspbian OS curlวิธีการไม่สามารถแก้ไขการตอบสนองที่ถูกต้อง มันยังบอกอีกว่า{error: Not Found}ฉันดู URL https://github.com/docker/compose/releases/download/1.11.2/docker-compose-Linux-armv7lแล้วและมันไม่ถูกต้อง ฉันเดาว่าไม่มีการสร้างที่นั่น

คู่มือนี้https://github.com/hypriot/arm-composeใช้ได้ผลสำหรับฉัน

sudo apt-get update
sudo apt-get install -y apt-transport-https
echo "deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main" | sudo tee /etc/apt/sources.list.d/hypriot.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 37BBEE3F7AD95B3F
sudo apt-get update
sudo apt-get install docker-compose

9

หากคุณติดตั้ง Dockerโดยเพิ่มที่เก็บอย่างเป็นทางการในรายการที่เก็บของคุณเช่น:

curl -L https://nightly.odoo.com/odoo.key | apt-key add -
sudo echo "deb http://nightly.odoo.com/10.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list
sudo apt-get update && sudo apt-get install odoo

แค่ทำ:

$ sudo apt-get install docker-compose

ในกรณีที่ใช้ distro / Fedora ที่ใช้ RHEL:

$ sudo dnf install docker-compose

1
Apt get - แม้หลังจากเพิ่มที่เก็บที่ระบุสำหรับ docker CE แล้วดูเหมือนว่าจะมีเพียงdocker-compose1.8 ซึ่งเข้ากันได้กับdocker-compose.ymlไฟล์สูงสุดของเวอร์ชัน 2 กล่าวอีกนัยหนึ่งคือพวกเขาจะไม่เผยแพร่docker-composeไปยังที่apt-getเก็บเริ่มต้นหรือ apt ของตัวเองอีกต่อไปรับที่เก็บ pipเพื่อให้ได้รับรุ่นใหม่ดูเหมือนว่าคุณจำเป็นต้องใช้ สิ่งนี้ทำให้ฉันรำคาญเพราะมันเป็นสิ่งเดียวที่ฉันใช้ pip
Groostav

6

ฉันเป็นเดเบียนฉันพบว่ามีบางสิ่งที่ค่อนข้างเป็นธรรมชาติที่ต้องทำ

apt-get install docker-compose

และมันก็ทำงานได้ (ไม่ได้ทดสอบกับ centos)


5

ก่อนอื่นโปรดตรวจสอบว่ามีการติดตั้ง Docker-compose หรือไม่

$ docker-compose -v

หากยังไม่ได้ติดตั้งโปรดดูคู่มือการติดตั้งhttps://docs.docker.com/compose/install/ หากติดตั้งให้สิทธิ์ในการเรียกใช้งานไบนารี

$ chmod +x /usr/local/bin/docker-compose

ตรวจสอบว่าใช้งานได้หรือไม่


1

อ้างถึงคำตอบที่ให้ไว้ข้างต้น (ฉันไม่มีชื่อเสียงเพียงพอที่จะอ้างถึงวิธีแก้ปัญหาแต่ละวิธีแยกกันดังนั้นฉันจึงทำสิ่งนี้โดยรวมในที่นี้) ฉันต้องการเสริมด้วยคำแนะนำที่สำคัญบางประการ:

  1. นักเทียบท่า - เขียนคุณสามารถติดตั้งจากที่เก็บ (หากคุณมีแพ็คเกจนี้ในที่เก็บหากไม่สามารถเพิ่มลงในระบบที่เก็บด้วยแพ็คเกจนี้ได้) หรือดาวน์โหลดไบนารีโดยใช้ curl - totourial บนเว็บไซต์อย่างเป็นทางการของโครงการ - src: https://docs.docker.com/compose/install /

  2. นักเทียบท่าเขียนจากที่เก็บอยู่ในเวอร์ชัน 1.8.0 (อย่างน้อยก็อย่างน้อยฉัน) เวอร์ชันเขียนเทียบท่านี้ไม่รองรับไฟล์คอนฟิกูเรชันในเวอร์ชัน 3 แต่รองรับเวอร์ชัน = <2 เท่านั้น เว็บไซต์อย่างเป็นทางการของโครงการเป็นคำแนะนำให้ใช้การกำหนดค่าคอนเทนเนอร์ในเวอร์ชัน 3 - src: https://docs.docker.com/compose/compose-file / compose-versioning / จากประสบการณ์ของฉันกับการทำงานในนักเทียบท่าฉันขอแนะนำให้ใช้คอนฟิกูเรชันคอนเทนเนอร์ในเวอร์ชัน 3 - มีตัวเลือกการกำหนดค่าให้ใช้มากกว่าในเวอร์ชัน <3 หากคุณต้องการใช้การกำหนดค่าคอนฟิกในเวอร์ชัน 3 คุณต้องอัปเดต / ติดตั้ง Docker-compose เป็นเวอร์ชันอย่างน้อย 1.17 โดยควรเป็นเวอร์ชันเสถียรล่าสุด เว็บไซต์อย่างเป็นทางการของโครงการเป็นข้อมูลเกี่ยวกับวิธีการทำกระบวนการนี้ - src:https://docs.docker.com/compose/install/

  3. /usr/local/bin/docker-composeเมื่อคุณพยายามที่จะเอาไบนารีนักเทียบท่า-เขียนแบบเก่าด้วยตนเองคุณสามารถมีข้อมูลเกี่ยวกับแฟ้มขาดหายไปในเส้นทางเริ่มต้น ในกรณีของฉันนักเทียบท่าเขียนอยู่ในเส้นทางเริ่มต้น / usr / bin / นักเทียบท่าเขียน ในกรณีนี้ผมขอแนะนำให้คุณใช้เครื่องมือค้นหาในระบบของคุณเพื่อหาไฟล์ไบนารีนักเทียบท่า-เขียน - sudo find / -name 'docker-compose'ตัวอย่างไวยากรณ์: มันช่วยฉัน ด้วยเหตุนี้ฉันจึงลบเวอร์ชันเขียนเทียบท่าเก่าและเพิ่มความเสถียรให้กับระบบ - ฉันใช้เครื่องมือ curl เพื่อดาวน์โหลดไฟล์ไบนารีนักเทียบท่าเขียนโดยวางไว้ในเส้นทางที่ถูกต้องและให้สิทธิ์ที่ถูกต้อง - กระบวนการทั้งหมดนี้มี ได้รับการอธิบายไว้ในโพสต์ด้านบน

ขอแสดงความนับถืออดัม


0

การติดตั้ง Docker ไม่ได้หมายความว่าคุณได้ติดตั้ง Docker-compose แล้ว มีข้อกำหนดเบื้องต้นที่คุณได้ติดตั้ง Docker engine ซึ่งคุณได้ทำไปแล้ว หลังจากนั้นคุณสามารถติดตั้ง Docker-compose ตามลิงค์นี้สำหรับ Centos 7


ไม่ฉันเรียกใช้คำสั่งนั้น "yum install docker-engine" แต่ฉันได้รับข้อผิดพลาด Package docker-engine-1.11.0-1.el7.centos.x86_64 ติดตั้งแล้วและเป็นเวอร์ชันล่าสุดและยังไม่มีการเขียนเทียบท่ามันทำให้ฉันมีข้อผิดพลาด / usr / local / bin / docker-compose: บรรทัดที่ 1: {error: Not Found}: command not found
mahen3d

อย่างที่ฉันพูด: Docker engine เป็นสิ่งที่แตกต่างจาก Docker compose ดังนั้นคุณสามารถติดตั้งเครื่องยนต์นักเทียบท่าและทำงานร่วมกับนักเทียบท่าได้ แต่เมื่อคุณต้องการใช้นักเทียบท่าคุณต้องติดตั้งแยกต่างหาก (โดยที่การติดตั้งเครื่องยนต์เป็นข้อกำหนดเบื้องต้น (คุณเคยอ่านมาแล้ว)) ลองใช้ลิงค์ที่ฉันให้ไว้ในคำตอบ (คุณสามารถใช้ curl หรือ pip เพื่อติดตั้งนักเทียบท่า)
lvthillo

0

ปัจจุบันนักเทียบท่าเป็นเครื่องมือที่ใช้นักเทียบท่า (-engine) แต่ไม่รวมอยู่ในการกระจายนักเทียบท่า

นี่คือลิงค์ไปยังคู่มือการติดตั้ง: https://docs.docker.com/compose/install/

TL; DR:

curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/bin/docker-compose

(1.8.0 จะมีการเปลี่ยนแปลงในอนาคต)



0

วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน แต่ฉันพบว่าสิ่งนี้ได้ผล:

sudo apt-get update -y && sudo apt-get install -y python3-pip python3-dev
sudo apt-get remove docker docker-engine docker.io
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo pip3 install docker-compose
#sudo docker-compose -f docker-compose-profess.yml pull ofw
sudo usermod -a -G docker $USER
sudo reboot

0

บน Linux คุณสามารถดาวน์โหลด Docker Compose binary ได้จากหน้า Compose repository release บน GitHub ทำตามคำแนะนำจากลิงค์ซึ่งเกี่ยวข้องกับการรันคำสั่ง curl ในเทอร์มินัลของคุณเพื่อดาวน์โหลดไบนารี คำแนะนำทีละขั้นตอนเหล่านี้รวมอยู่ด้านล่าง

1: รันคำสั่งนี้เพื่อดาวน์โหลด Docker Compose เวอร์ชันเสถียรในปัจจุบัน:

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

หากต้องการติดตั้ง Compose เวอร์ชันอื่นให้แทนที่ 1.26.2 ด้วยเวอร์ชันของ Compose ที่คุณต้องการใช้

2: ใช้สิทธิ์ปฏิบัติการกับไบนารี:

sudo chmod +x /usr/local/bin/docker-compose

หมายเหตุ: หากคำสั่ง docker-compose ล้มเหลวหลังการติดตั้งให้ตรวจสอบเส้นทางของคุณ คุณยังสามารถสร้างลิงก์สัญลักษณ์ไปยัง / usr / bin หรือไดเร็กทอรีอื่น ๆ ในพา ธ ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.