วิธีอัปเกรด Docker-compose เป็นเวอร์ชันล่าสุด


111

ฉันได้ติดตั้ง Docker-compose โดยใช้คำสั่ง

sudo apt install docker-compose

ติดตั้ง Docker-compose เวอร์ชัน 1.8.0 และสร้างไม่รู้จัก

ฉันต้องการ Docker-compose เวอร์ชันล่าสุดหรือเวอร์ชัน 1.9.0 เป็นอย่างน้อย

ใครช่วยบอกหน่อยได้ไหมว่าฉันควรใช้วิธีใดในการอัปเกรดหรือถอนการติดตั้งและติดตั้งเวอร์ชันล่าสุดใหม่

ฉันได้ตรวจสอบเว็บไซต์นักเทียบท่าแล้วและเห็นว่าพวกเขาแนะนำให้ติดตั้งเวอร์ชันล่าสุด '

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

แต่ก่อนหน้านั้นฉันต้องถอนการติดตั้งเวอร์ชันปัจจุบันซึ่งสามารถทำได้โดยใช้คำสั่ง

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

แต่สามารถใช้ได้เฉพาะเมื่อการติดตั้งเสร็จสิ้นโดยใช้ curl ฉันไม่แน่ใจว่าการติดตั้งทำได้โดย curl ตามที่ฉันเคยใช้หรือไม่

sudo apt install docker-compose

โปรดแจ้งให้เราทราบว่าตอนนี้ฉันควรทำอย่างไรเพื่อถอนการติดตั้งและติดตั้ง Docker-compose ใหม่

คำตอบ:


146

ก่อนอื่นให้ลบเวอร์ชันเก่า :

หากติดตั้งผ่านapt-get

sudo apt-get remove docker-compose

หากติดตั้งผ่านcurl

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

หากติดตั้งผ่านpip

pip uninstall docker-compose

จากนั้นค้นหาเวอร์ชันใหม่ล่าสุดในหน้าเผยแพร่ที่ GitHubหรือโดยการโค้งงอ API หากคุณได้jqติดตั้ง (ขอบคุณdragon788และfrblสำหรับการปรับปรุงนี้)

VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)

สุดท้ายดาวน์โหลดไปยังตำแหน่งที่คุณสามารถเข้าถึงได้ $ PATH และตั้งค่าการอนุญาต:

DESTINATION=/usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION

2
ลองอัปเดตเส้นทางใน / usr / local / bin / docker-compose แล้วเรียกใช้sudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal

2
ไม่ต้องย้ายไฟล์ /usr/local/binเส้นทางควรจะอยู่ใน$PATHอยู่แล้ว เพียงแค่chmodในสถานที่ คำตอบที่อัปเดตเพื่อแสดงถึงสิ่งนี้
ทอง

4
คุณอาจต้องการทำsudo chmod 755 $DESTINATIONแทน+x
นีโอ

2
นีโอจับดี โดยปกติฉันจะปรับความสามารถตามความต้องการของฉันในกรณีที่สิ่งอื่นกำหนดสิ่งที่พวกเขาต้องการ แต่ที่นี่เรากำลังดาวน์โหลดไฟล์ใหม่ การตั้งค่า perms ทั้งหมดเหมาะสม
ทอง

2
@Rebar คุณสามารถระบุเพิ่มเติมเกี่ยวกับสิ่งที่คุณต้องการปรับปรุงเส้นทางได้หรือไม่? /usr/local/binเป็นสถานที่มาตรฐานที่ดีในการวางไบนารีทั่วโลกที่ไม่ได้รับการจัดการโดยระบบบรรจุภัณฑ์ คำตอบยังกล่าวถึงการระบุ "ตำแหน่งที่คุณชื่นชอบ $ PATH ที่สามารถเข้าถึงได้" ซึ่งบ่งบอกถึงการปรับเปลี่ยนหากคุณ$PATHแตกต่าง
Eric

38

วิธีที่ง่ายที่สุดในการมีโซลูชันที่ถาวรและยั่งยืนสำหรับการติดตั้ง Docker Compose และวิธีอัปเกรดคือใช้pip ตัวจัดการแพ็คเกจกับ:

pip install docker-compose

ฉันกำลังค้นหาวิธีแก้ปัญหาที่ดีสำหรับปัญหา "วิธีอัปเกรดเป็นหมายเลขเวอร์ชันล่าสุด" ที่น่าเกลียดซึ่งปรากฏขึ้นหลังจากที่คุณอ่านเอกสารอย่างเป็นทางการแล้วและเพิ่งพบเป็นครั้งคราวเพียงแค่ดูที่pip สำหรับนักเทียบท่า แพคเกจ - มันควรจะสะท้อน (ส่วนใหญ่) จำนวนปัจจุบันของล่าสุดเปิดตัวรุ่น Docker เขียน

ผู้จัดการแพ็คเกจเป็นทางออกที่ดีที่สุดเสมอหากต้องจัดการการติดตั้งซอฟต์แวร์! ดังนั้นคุณจึงแยกไม่ออกจากการจัดการเวอร์ชันด้วยตัวคุณเอง


2
+1 คำตอบที่ดี ก่อนหน้านี้: ฉันมีเวอร์ชันเขียนเทียบท่า: นักเทียบท่า - เขียนเวอร์ชัน 1.21.2 สร้าง a133471 ดังนั้นเพื่ออัปเกรดเป็นเวอร์ชันที่ไม่ใช่ RC ล่าสุดฉันพบว่าสิ่งนี้ใช้งานได้เพื่ออัปเกรด: 1) apt install python-pipเพื่อติดตั้ง PIP จากนั้น pip install docker-composeติดตั้งเวอร์ชันล่าสุดและ จากนั้นตรวจสอบเวอร์ชัน: docker-compose --versionซึ่งให้ฉัน: นักเทียบท่า - เขียนเวอร์ชัน 1.23.2, สร้าง 1110ad0
therobyouknow

pip install docker-composeได้ให้ฉัน "ความต้องการความพึงพอใจอยู่แล้ว: นักเทียบท่า-เขียน" ดังนั้นผมต้องทำapt-get purge docker-composeและhash -d docker-composeจากนั้นpip install docker-composeจะได้รับนักเทียบท่า-เขียนบน Ubuntu 1.24 18.04
krubo

หลังจากติดตั้ง Docker-compose โดย pip ฉันพบข้อผิดพลาดนี้:ImportError: cannot import name 'Context'
Benyamin Jafari

ดังนั้นเพื่อจัดการกับข้อผิดพลาดนี้ฉันติดตั้งdockerแพ็คเกจใหม่โดยpip
Benyamin Jafari

17

จากคำตอบของ @ eric-johnson ฉันกำลังใช้สิ่งนี้ในสคริปต์:

#!/bin/bash
compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
output='/usr/local/bin/docker-compose'
curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$(uname -s)-$(uname -m) -o $output
chmod +x $output
echo $(docker-compose --version)

มันคว้าเวอร์ชันล่าสุดจาก GitHub api


ฉันพบข้อผิดพลาดในบรรทัดที่ 4 zsh: parse error near
:)

เพิ่งทดสอบที่นี่ แต่ดูเหมือนว่าจะใช้งานได้ดี (debian 10 กับ zsh) คุณแน่ใจว่าคุณคัดลอกอย่างถูกต้อง?
frbl

ลองอ้างถึง URL สองครั้งเนื่องจากบางครั้งเชลล์สามารถรับข้อมูลได้เล็กน้อย
dragon788

15

หากวิธีการข้างต้นไม่ได้ผลสำหรับคุณให้อ้างอิงคำตอบนี้: https://stackoverflow.com/a/40554985

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

3
แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป - จากรีวิว
Luuklag

@ ลุกลักษณ์อัพเดทคำตอบ ขอบคุณสำหรับคำแนะนำ
kpratihast

ดูเหมือนว่าจะเป็นตัวเลือกที่ช้ามาก
TeoTN

11

หากคุณพยายามsudo apt-get remove docker-composeและได้รับE: Unable to locate package docker-composeลองวิธีนี้:

คำสั่งนี้ต้องส่งคืนผลลัพธ์เพื่อตรวจสอบว่ามีการติดตั้งที่นี่:

ls -l /usr/local/bin/docker-compose

ลบเวอร์ชันเก่า:

sudo rm -rf docker-compose

ดาวน์โหลดเวอร์ชันล่าสุด (ตรวจสอบ repo อย่างเป็นทางการ: นักเทียบท่า / เขียน / เผยแพร่ ):

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

( แทนที่ 1.24.0 หากจำเป็น )

สุดท้ายใช้สิทธิ์ที่เรียกใช้งานได้กับไบนารี:

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

ตรวจสอบเวอร์ชัน:

docker-compose -v

5

นี่คืออีกหนึ่งตัวเลือกสำหรับติดตั้ง Docker-compose เวอร์ชันล่าสุดโดยใช้ curl และ sed

curl -L "https://github.com/docker/compose/releases/download/`curl -fsSLI -o /dev/null -w %{url_effective} https://github.com/docker/compose/releases/latest | sed 's#.*tag/##g' && echo`/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

2

ใช้สิ่งนี้จากบรรทัดคำสั่ง: 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

จากนั้นทดสอบเวอร์ชัน:

$ docker-compose --version

2

ฉันพยายามติดตั้ง docker-compose บน "Ubuntu 16.04.5 LTS" แต่หลังจากติดตั้งแล้วเป็นแบบนี้:

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

ฉันได้รับ:

-bash: / usr / local / bin / docker-compose: ปฏิเสธการอนุญาต

และในขณะที่ฉันใช้มันกับ sudo ฉันได้รับ:

sudo: 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 ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose

1

หลังจากมองหาวิธีต่างๆมากมายในการดำเนินการนี้ฉันก็ใช้jqมันและหวังว่าฉันจะสามารถขยายมันเพื่อจัดการกับ repos อื่น ๆ นอกเหนือจาก Docker-Compose โดยไม่ต้องทำงานมากเกินไป

# If you have jq installed this will automatically find the latest release binary for your architecture and download it
curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | jq --arg PLATFORM_ARCH "$(echo `uname -s`-`uname -m`)" -r '.assets[] | select(.name | endswith($PLATFORM_ARCH)).browser_download_url' | xargs sudo curl -L -o /usr/local/bin/docker-compose --url

1

หากคุณมี homebrew คุณสามารถติดตั้งผ่านไฟล์ brew

$ brew install docker-compose

นี่เป็นวิธีที่ดีในการติดตั้งบนระบบ Mac OS


1

บนเดสก์ท็อป ubuntu 18.04.2 ฉันได้ลบ 'local' ออกจากเส้นทางเมื่อใช้คำสั่ง curl เพื่อติดตั้งแพ็คเกจและมันก็ใช้ได้สำหรับฉัน ดูคำตอบด้านบนของ Kshitij


1

หากคุณติดตั้งด้วย pip เพื่ออัปเกรดคุณสามารถใช้:

 pip install --upgrade docker-compose

หรือตามที่ Mariyo ระบุด้วย pip3 อย่างชัดเจน:

 pip3 install --upgrade docker-compose

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