การใช้--restart=always
นโยบายจะจัดการการรีสตาร์ทคอนเทนเนอร์ที่มีอยู่ในกรณีที่รีบูต
ปัญหาคือถ้ามีหลายคอนเทนเนอร์ด้วย--restart=always
เมื่อคุณเรียกใช้อิมเมจของเวอร์ชันที่ใหม่กว่าตามที่กล่าวไว้ในตัวเทียบท่า - คุณจะปิดการใช้งานรีสตาร์ทอัตโนมัติบนคอนเทนเนอร์ได้อย่างไร? .
พยายามที่จะเอาภาชนะโดยอัตโนมัติเมื่ออยู่โดยตัวเลือกใส่docker run --rm
ก็จะมีปัญหากับ--restart=always
นโยบายตั้งแต่ที่พวกเขากำลังขัดแย้งกันของแต่ละคน
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
ดังนั้นในกรณีนี้มันจะดีกว่าที่จะเลือกตัวเลือกอื่น: - เริ่มต้นใหม่ยกเว้น - หยุดนโยบาย
$ docker run --rm --restart unless-stopped <image>
นโยบายนี้จะไม่ขัดแย้งกันdocker run --rm
แต่ที่อธิบายไว้ในเอกสารนักเทียบท่า :
ซึ่งคล้ายกับ--restart=always
ยกเว้นว่าเมื่อคอนเทนเนอร์หยุดทำงาน (ด้วยตนเองหรืออย่างอื่น)จะไม่ถูกรีสตาร์ทแม้หลังจาก Docker daemon รีสตาร์ท
ดังนั้นเมื่อใช้--restart unless-stopped
นโยบายนี้เพื่อให้แน่ใจว่าการรีสตาร์ททำงานในกรณีที่หยุดโดยไม่ตั้งใจเมื่อคุณปิดเครื่องให้ทำหนึ่งครั้งในเทอร์มินัลอื่นดังนี้
$ docker ps
$ docker restart <container>
รอจนกว่ากระบวนการฆ่าจะจบลงในเชลล์ก่อนหน้าจากนั้นปิดและปล่อยทิ้งไว้ ( ไม่ต้องออก )
และตรวจสอบอีกครั้งในเทอร์มินัลที่เหลือหากคอนเทนเนอร์ยังทำงานอยู่:
$ docker ps
หากยังคงทำงานอยู่คุณสามารถรีบู๊ตและตรวจสอบอีกครั้งว่าแอปพลิเคชันเริ่มต้นใหม่และดูว่านักเทียบท่าของคุณสะอาดโดยไม่ใช้คอนเทนเนอร์หลายตัว