跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

การจัดการ Docker Container: Start, Stop, Restart, Remove

บทความนี้อธิบายวิธีการจัดการ Docker Container โดยใช้คำสั่งพื้นฐาน ได้แก่ `docker start` (เริ่มต้น Container ที่หยุด), `docker stop` (หยุด Container ที่กำลังทำงา...

การจัดการ Docker Container: Start, Stop, Restart, Remove

ในบทที่แล้ว เราได้ลองรัน Docker Container ตัวแรกของเราโดยใช้ Image hello-world และเรียนรู้วิธีการตรวจสอบ Container ที่เคยรันไปแล้ว ในบทนี้ เราจะเจาะลึกลงไปในการจัดการ Container ที่มีอยู่ ไม่ว่าจะเป็นการเริ่มต้น, หยุด, รีสตาร์ท, และลบ Container เพื่อให้คุณสามารถควบคุมการทำงานของ Container ได้อย่างเต็มที่

ทำความเข้าใจสถานะของ Container

ก่อนที่เราจะเริ่มจัดการ Container เรามาทำความเข้าใจสถานะต่างๆ ของ Container กันก่อน Container สามารถอยู่ในสถานะต่างๆ ได้ดังนี้:

  • Created: Container ถูกสร้างขึ้นแล้ว แต่ยังไม่ได้เริ่มทำงาน
  • Running: Container กำลังทำงานอยู่
  • Stopped: Container หยุดทำงานแล้ว
  • Paused: Container หยุดการทำงานชั่วคราว (จะกล่าวถึงในบทต่อๆ ไป)
  • Restarting: Container กำลังทำการรีสตาร์ท
  • Exited: Container หยุดทำงานเนื่องจากกระบวนการหลักภายใน Container เสร็จสิ้นหรือเกิดข้อผิดพลาด

สถานะเหล่านี้สำคัญเพราะมีผลต่อคำสั่งที่เราสามารถใช้จัดการ Container ได้

คำสั่ง docker start: เริ่มต้น Container ที่หยุดทำงาน

คำสั่ง docker start ใช้เพื่อเริ่มต้น Container ที่อยู่ในสถานะ Stopped หรือ Created เท่านั้น Container ที่กำลัง Running อยู่แล้ว จะไม่สามารถใช้คำสั่งนี้ได้

ไวยากรณ์:

docker start [OPTIONS] CONTAINER [CONTAINER...]

โดย CONTAINER คือ ID หรือชื่อของ Container ที่ต้องการเริ่มต้น

ตัวอย่าง:

สมมติว่าเรามี Container ชื่อ my-container ที่อยู่ในสถานะ Stopped เราสามารถเริ่มต้น Container นี้ได้โดยใช้คำสั่ง:

docker start my-container

หรือถ้าเราทราบ Container ID (เช่น a1b2c3d4e5f6) เราก็สามารถใช้ Container ID แทนได้:

docker start a1b2c3d4e5f6

หลังจากรันคำสั่งนี้ Docker จะเริ่ม Container และมันจะเข้าสู่สถานะ Running

เหตุผลเชิงออกแบบและแนวปฏิบัติที่ดี:

การใช้ docker start มีประโยชน์เมื่อคุณต้องการรัน Container ที่เคยหยุดไปแล้ว โดยไม่ต้องสร้าง Container ใหม่ทั้งหมด ซึ่งช่วยประหยัดเวลาและทรัพยากร นอกจากนี้ การใช้ชื่อ Container แทน Container ID ช่วยให้จำง่ายและลดโอกาสที่จะเกิดข้อผิดพลาดจากการพิมพ์ ID ที่ยาวเหยียด

คำสั่ง docker stop: หยุด Container ที่กำลังทำงาน

คำสั่ง docker stop ใช้เพื่อหยุด Container ที่กำลังอยู่ในสถานะ Running คำสั่งนี้จะส่งสัญญาณ SIGTERM ไปยังกระบวนการหลักภายใน Container เพื่อให้กระบวนการนั้นหยุดทำงานอย่างเรียบร้อย (gracefully)

ไวยากรณ์:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

โดย CONTAINER คือ ID หรือชื่อของ Container ที่ต้องการหยุด

ตัวอย่าง:

หาก my-container กำลังทำงานอยู่ เราสามารถหยุดมันได้ด้วยคำสั่ง:

docker stop my-container

หรือใช้ Container ID:

docker stop a1b2c3d4e5f6

โดยปกติ Docker จะรอเป็นระยะเวลาหนึ่ง (default คือ 10 วินาที) ให้ Container หยุดทำงานอย่างเรียบร้อย ถ้า Container ยังไม่หยุดหลังจากระยะเวลานี้ Docker จะส่งสัญญาณ SIGKILL ซึ่งเป็นการบังคับให้ Container หยุดทำงานทันที

เหตุผลเชิงออกแบบและแนวปฏิบัติที่ดี:

การใช้ docker stop เป็นวิธีที่แนะนำในการหยุด Container เพราะช่วยให้กระบวนการภายใน Container สามารถบันทึกข้อมูลหรือทำความสะอาดทรัพยากรก่อนที่จะหยุดทำงาน ซึ่งป้องกันการสูญเสียข้อมูลหรือความเสียหายที่อาจเกิดขึ้นจากการหยุด Container อย่างกะทันหัน

ข้อควรระวัง: หากคุณต้องการหยุด Container ทันทีโดยไม่รอให้มันหยุดอย่างเรียบร้อย คุณสามารถใช้คำสั่ง docker kill (จะไม่กล่าวถึงในบทนี้) ซึ่งจะส่งสัญญาณ SIGKILL ไปยัง Container ทันที

คำสั่ง docker restart: รีสตาร์ท Container

คำสั่ง docker restart ใช้เพื่อรีสตาร์ท Container โดย Docker จะทำการหยุด Container (ด้วย docker stop) และเริ่มต้น Container ใหม่ (ด้วย docker start) ในขั้นตอนเดียว

ไวยากรณ์:

docker restart [OPTIONS] CONTAINER [CONTAINER...]

โดย CONTAINER คือ ID หรือชื่อของ Container ที่ต้องการรีสตาร์ท

ตัวอย่าง:

docker restart my-container

หรือใช้ Container ID:

docker restart a1b2c3d4e5f6

เช่นเดียวกับ docker stop Docker จะรอเป็นระยะเวลาหนึ่งให้ Container หยุดทำงานอย่างเรียบร้อยก่อนที่จะเริ่มต้นใหม่

เหตุผลเชิงออกแบบและแนวปฏิบัติที่ดี:

docker restart มีประโยชน์เมื่อคุณต้องการรีสตาร์ท Container อย่างรวดเร็วโดยไม่ต้องรัน docker stop และ docker start แยกกัน นอกจากนี้ ยังสามารถใช้เพื่อแก้ไขปัญหาชั่วคราวที่อาจเกิดขึ้นกับ Container ได้ เช่น Container ค้างหรือทำงานผิดปกติ

คำสั่ง docker rm: ลบ Container

คำสั่ง docker rm ใช้เพื่อลบ Container ที่อยู่ในสถานะ Stopped หรือ Exited เท่านั้น Container ที่กำลัง Running อยู่ จะไม่สามารถลบได้

ไวยากรณ์:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

โดย CONTAINER คือ ID หรือชื่อของ Container ที่ต้องการลบ

ตัวอย่าง:

สมมติว่า my-container อยู่ในสถานะ Stopped เราสามารถลบมันได้ด้วยคำสั่ง:

docker rm my-container

หรือใช้ Container ID:

docker rm a1b2c3d4e5f6

หากคุณต้องการลบ Container ที่กำลังทำงานอยู่ คุณจะต้องหยุดมันก่อนด้วย docker stop แล้วจึงใช้ docker rm หรือคุณสามารถใช้ option -f หรือ --force เพื่อบังคับให้ลบ Container ที่กำลังทำงานอยู่ได้ (ไม่แนะนำ เว้นแต่จำเป็นจริงๆ เพราะอาจทำให้ข้อมูลเสียหายได้)

ตัวอย่างการบังคับลบ Container:

docker rm -f my-container

เหตุผลเชิงออกแบบและแนวปฏิบัติที่ดี:

การลบ Container ที่ไม่ได้ใช้งานแล้วช่วยประหยัดพื้นที่ดิสก์และลดความซับซ้อนในการจัดการ Docker นอกจากนี้ ควรหลีกเลี่ยงการบังคับลบ Container ที่กำลังทำงานอยู่ เว้นแต่จำเป็นจริงๆ เพราะอาจทำให้ข้อมูลเสียหายหรือระบบไม่เสถียร

ข้อควรระวัง: เมื่อคุณลบ Container ข้อมูลที่อยู่ใน Container นั้นจะหายไป หากคุณต้องการเก็บข้อมูลไว้ คุณควรใช้ Volume (จะกล่าวถึงในบทต่อๆ ไป) เพื่อเก็บข้อมูลไว้ภายนอก Container

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการจัดการ Docker Container โดยใช้คำสั่ง docker start, docker stop, docker restart, และ docker rm ซึ่งเป็นเครื่องมือพื้นฐานที่สำคัญในการควบคุมการทำงานของ Container การทำความเข้าใจสถานะของ Container และการใช้คำสั่งเหล่านี้อย่างถูกต้อง จะช่วยให้คุณสามารถจัดการ Docker Container ได้อย่างมีประสิทธิภาพและปลอดภัย ในบทต่อไป เราจะเรียนรู้วิธีการสร้าง Docker Image ของตัวเอง ซึ่งจะทำให้คุณสามารถสร้าง Container ที่มีสภาพแวดล้อมและการตั้งค่าที่คุณต้องการได้อย่างง่ายดาย

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务