Tag Archive Name

Byphunsanit

Docker: Service Name VS container_name

ใน Docker Compose มันมีขื่ออยู่ 2 ตัวที่ใช้แทบจะเหมือน ๆ กัน คือ services: db-mariadb และ container_name: db-mariadb-dev เพราะแยกไม่ออกว่ามันต่างกันยังไง อันไหนคือ Hostname


services: ( Service Name ) db-mariadb

นี่คือ “ชื่อที่ใช้ภายในระบบ Docker Compose” ครับ

  • การใช้งาน: ใช้เพื่อให้ Service อื่นๆ ในไฟล์เดียวกันรู้จักกัน เช่น ถ้าคุณมี WordPress อีกตัวหนึ่ง คุณจะสั่งให้มันต่อมาที่ Hostname ชื่อ db-mariadb ( ไม่ใช่ localhost )
  • Network: มันทำหน้าที่เป็น Internal DNS ภายใน Network ของ Docker
  • ความสำคัญ: จำเป็นต้องมีเสมอ เพราะเป็นตัวกำหนดโครงสร้างของโปรเจกต์

container_name: ( Container Name ) db-mariadb-dev

นี่คือ “ชื่อของ Container ที่ปรากฏบนเครื่อง Host” ครับ

  • การใช้งาน: เป็นชื่อที่คุณจะเห็นเวลาพิมพ์คำสั่ง docker ps ใน Terminal หรือใช้สั่งงานตรงๆ เช่น
    docker logs db-mariadb-dev
  • ข้อจำกัด: หากระบุชื่อนี้ไว้ คุณจะ ไม่สามารถ สั่ง docker-compose up --scale mariadb=2 ได้ เพราะชื่อ Container บนเครื่องห้ามซ้ำกัน
  • ความสำคัญ: ไม่จำเป็นต้องระบุก็ได้ ถ้าไม่ระบุ Docker จะตั้งชื่อให้เองโดยใช้รูปแบบ [ชื่อโปรเจกต์]-[ชื่อ service]-1

ตารางเปรียบเทียบ

คุณสมบัติService Name ( db-mariadb )Container Name ( db-mariadb-dev )
ขอบเขตการใช้ใช้คุยกันเองระหว่าง Container ( Internal )ใช้เรียกจากหน้าจอ Command Line ( External / Host )
Hostnameใช้ชื่อนี้เป็น Hostname ในการต่อ Databaseไม่สามารถใช้ชื่อนี้เป็น Hostname ได้ ( โดยปกติ )
การระบุบังคับ ต้องมีไม่บังคับ ( Optional )
การ Scaleรองรับการทำหลาย Replicaไม่รองรับ ( เพราะชื่อจะซ้ำ )

สรุปสั้นๆ: services: db-mariadb คือชื่อที่เพื่อนบ้าน ( Container อื่น ) ใช้เรียกคุณ ส่วน container_name: db-mariadb-dev คือชื่อเล่นที่คุณแปะไว้หน้าบ้านให้เจ้าของบ้าน ( คุณ ) เรียกใช้ได้ง่าย ๆ ครับ


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