เมื่อใดก็ตามที่ฉันดำเนินการ
docker-compose start
docker-compose ps
ฉันเห็นคอนเทนเนอร์ของฉันที่มีสถานะ "UP" ถ้าฉันทำ
docker-compose up -d
ฉันจะเห็น verbose มากขึ้น แต่มันจะมีสถานะเดียวกัน มีความแตกต่างระหว่างคำสั่งทั้งสองหรือไม่?
เมื่อใดก็ตามที่ฉันดำเนินการ
docker-compose start
docker-compose ps
ฉันเห็นคอนเทนเนอร์ของฉันที่มีสถานะ "UP" ถ้าฉันทำ
docker-compose up -d
ฉันจะเห็น verbose มากขึ้น แต่มันจะมีสถานะเดียวกัน มีความแตกต่างระหว่างคำสั่งทั้งสองหรือไม่?
คำตอบ:
เริ่มเขียนนักเทียบท่า
( 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/
คำถามที่พบบ่อยในนักเทียบท่ามีการอธิบายไว้อย่างชัดเจน:
อะไรคือความแตกต่างระหว่าง up, run และ start?
docker-compose up
โดยปกติแล้วคุณต้องการ ใช้up
เพื่อเริ่มหรือรีสตาร์ทบริการทั้งหมดที่กำหนดไว้ในไฟล์docker-compose.yml
. ในโหมด "แนบ" เริ่มต้นคุณจะเห็นบันทึกทั้งหมดจากคอนเทนเนอร์ทั้งหมด ในโหมด "แยกออก" (-d
) เขียนจะออกหลังจากเริ่มการทำงานของคอนเทนเนอร์ แต่คอนเทนเนอร์จะยังคงทำงานอยู่เบื้องหลัง
docker-compose run
คำสั่งสำหรับการทำงาน“one-off” หรือ“เฉพาะกิจ” งาน ต้องใช้ชื่อบริการที่คุณต้องการเรียกใช้และเริ่มต้นคอนเทนเนอร์สำหรับบริการที่บริการที่ทำงานอยู่เท่านั้น ใช้run
เพื่อรันการทดสอบหรือดำเนินงานด้านการดูแลระบบเช่นการลบหรือเพิ่มข้อมูลลงในคอนเทนเนอร์ไดรฟ์ข้อมูลrun
คำสั่งทำหน้าที่เหมือนdocker run -ti
ในการที่จะเปิดสถานีโต้ตอบกับภาชนะบรรจุและส่งกลับออกจากสถานะการจับคู่ออกจากสถานะของกระบวนการในภาชนะที่
docker-compose start
คำสั่งจะเป็นประโยชน์เฉพาะกับภาชนะบรรจุที่เริ่มต้นใหม่ที่ถูกสร้างขึ้นก่อนหน้านี้ แต่ก็หยุด ไม่เคยสร้างคอนเทนเนอร์ใหม่