Site icon PlusMagi's Blog By Pitt Phunsanit

Docker: ป้องกันซ้ำ / ชน container_name

การที่ใส่ container_name นอกจากจะคุมชื่อ container ให้สื่อความหมายแล้ว การระบุ container_name: ad-samba คือการ ล็อกชื่อ Container ไว้ที่ระดับเครื่อง Host ซึ่งมีผลในการป้องกันการรันซ้ำให้มี “ตัวเดียว” ( Singleton ) ดังนี้ครับ


ป้องกัน Container แบบเดียวกัน run พร้อมกัน

  1. ป้องกันการ Scale ( ในโปรเจกต์เดียวกัน )
    หากคุณพยายามใช้คำสั่งเพื่อขยายเครื่อง ( Scale ) เช่น
    docker-compose up --scale samba=2
    Docker จะแจ้งเตือน Error ทันที เพราะมันไม่สามารถสร้าง Container ชื่อ ad-samba ขึ้นมาซ้ำเป็นตัวที่สองได้ในเวลาเดียวกัน
  2. ป้องกันการชนกัน ( ระหว่างโปรเจกต์ )
    สมมติว่าคุณมีไฟล์ Docker Compose 2 ชุด อยู่คนละโฟลเดอร์กัน ( คนละ Project Name ) แต่ทั้งคู่ดันเขียนว่า container_name: ad-samba เหมือนกัน
    • ถ้าตัวแรกกำลังรันอยู่ ตัวที่สองจะสั่ง up ไม่ขึ้น
    • Docker จะฟ้องว่าชื่อ Container นี้ถูกใช้งานอยู่แล้วโดย Container ID อื่น

ข้อควรระวัง ( สิ่งที่มัน “ไม่ป้องกัน” )

แม้ว่าจะป้องกันการรันชื่อซ้ำได้ แต่ยังมีจุดที่ต้องระวังเพื่อให้ระบบของคุณทำงานได้เสถียรครับ

สรุป

การใส่ container_name เป็นวิธีที่ดีในการ “บังคับให้มีได้แค่ตัวเดียว” ( Singleton ) บนเครื่องนั้นๆ ครับ เหมาะมากสำหรับ Service ที่เป็นโครงสร้างพื้นฐานอย่าง Active Directory ( AD DC ) หรือ Database


อ่านเพิ่มเติม

Exit mobile version