อะไรคือความแตกต่างระหว่าง Docker-compose up และ Docker-compose start?


124

เมื่อใดก็ตามที่ฉันดำเนินการ

docker-compose start 
docker-compose ps

ฉันเห็นคอนเทนเนอร์ของฉันที่มีสถานะ "UP" ถ้าฉันทำ

docker-compose up -d

ฉันจะเห็น verbose มากขึ้น แต่มันจะมีสถานะเดียวกัน มีความแตกต่างระหว่างคำสั่งทั้งสองหรือไม่?

คำตอบ:


166

เริ่มเขียนนักเทียบท่า
( https://docs.docker.com/compose/reference/start/ )

เริ่มคอนเทนเนอร์ที่มีอยู่สำหรับบริการ

นักเทียบท่าเขียนขึ้น
( https://docs.docker.com/compose/reference/up/ )

บิลด์ (ใหม่) สร้างเริ่มต้นและเชื่อมโยงกับคอนเทนเนอร์สำหรับบริการ

คำสั่งนี้ยังเริ่มบริการที่เชื่อมโยงด้วยเว้นแต่จะรันอยู่แล้ว

docker-compose upคำสั่งมวลรวมการส่งออกของแต่ละภาชนะ (หลักที่ทำงานdocker-compose logs -f) เมื่อคำสั่งออกจากระบบคอนเทนเนอร์ทั้งหมดจะหยุดทำงาน การรันจะdocker-compose up -dเริ่มคอนเทนเนอร์ในพื้นหลังและปล่อยให้คอนเทนเนอร์ทำงาน

หากมีคอนเทนเนอร์ที่มีอยู่สำหรับบริการและการกำหนดค่าหรืออิมเมจของบริการมีการเปลี่ยนแปลงหลังจากการสร้างคอนเทนเนอร์ให้ docker-compose upรับการเปลี่ยนแปลงโดยการหยุดและสร้างคอนเทนเนอร์ใหม่ (การเก็บรักษาวอลุ่มที่ติดตั้ง) หากต้องการป้องกันไม่ให้ Compose รับการเปลี่ยนแปลงให้ใช้--no-recreateแฟล็ก

สำหรับข้อมูลอ้างอิง CLI ฉบับสมบูรณ์:
https://docs.docker.com/compose/reference/


3
อัปเดตลิงก์ไปยังการอ้างอิง CLI ของนักเทียบท่า: docs.docker.com/compose/reference * นักเทียบท่าเขียนขึ้น: docs.docker.com/compose/reference/up * เริ่มเขียนนักเทียบท่า: docs.docker.com/compose/reference / start
michael

18

คำถามที่พบบ่อยในนักเทียบท่ามีการอธิบายไว้อย่างชัดเจน:

อะไรคือความแตกต่างระหว่าง up, run และ start?

docker-compose upโดยปกติแล้วคุณต้องการ ใช้upเพื่อเริ่มหรือรีสตาร์ทบริการทั้งหมดที่กำหนดไว้ในไฟล์docker-compose.yml. ในโหมด "แนบ" เริ่มต้นคุณจะเห็นบันทึกทั้งหมดจากคอนเทนเนอร์ทั้งหมด ในโหมด "แยกออก" ( -d) เขียนจะออกหลังจากเริ่มการทำงานของคอนเทนเนอร์ แต่คอนเทนเนอร์จะยังคงทำงานอยู่เบื้องหลัง

docker-compose runคำสั่งสำหรับการทำงาน“one-off” หรือ“เฉพาะกิจ” งาน ต้องใช้ชื่อบริการที่คุณต้องการเรียกใช้และเริ่มต้นคอนเทนเนอร์สำหรับบริการที่บริการที่ทำงานอยู่เท่านั้น ใช้run เพื่อรันการทดสอบหรือดำเนินงานด้านการดูแลระบบเช่นการลบหรือเพิ่มข้อมูลลงในคอนเทนเนอร์ไดรฟ์ข้อมูล runคำสั่งทำหน้าที่เหมือน docker run -tiในการที่จะเปิดสถานีโต้ตอบกับภาชนะบรรจุและส่งกลับออกจากสถานะการจับคู่ออกจากสถานะของกระบวนการในภาชนะที่

docker-compose startคำสั่งจะเป็นประโยชน์เฉพาะกับภาชนะบรรจุที่เริ่มต้นใหม่ที่ถูกสร้างขึ้นก่อนหน้านี้ แต่ก็หยุด ไม่เคยสร้างคอนเทนเนอร์ใหม่


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