メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

แชร์ Docker Image บน Docker Hub

บทความนี้อธิบายวิธีการแชร์ Docker Image ที่สร้างขึ้นบน Docker Hub เพื่อให้ผู้อื่นสามารถนำไปใช้งานได้ โดยเริ่มจากการสมัครบัญชี Docker Hub, Login ผ่าน Command Lin...

แชร์ Docker Image บน Docker Hub

หลังจากที่เราสร้าง Docker Image ของตัวเองได้ในบทที่แล้ว (โดยใช้ Dockerfile และคำสั่ง docker build) สิ่งที่น่าสนใจต่อไปคือการแชร์ Image นั้นให้ผู้อื่นสามารถนำไปใช้งานได้ง่ายๆ ซึ่ง Docker Hub คือทางออกของเรา Docker Hub เป็นเหมือน repository สาธารณะ (หรือส่วนตัว ถ้าเราต้องการ) ที่เก็บ Docker Image ต่างๆ ทำให้เราสามารถดาวน์โหลด Image ที่คนอื่นสร้างไว้ หรือแชร์ Image ของเราให้คนอื่นดาวน์โหลดไปใช้ได้

ในบทนี้ เราจะมาเรียนรู้วิธีการ Push Docker Image ที่สร้างขึ้นไปยัง Docker Hub เพื่อแชร์กับผู้อื่น

สมัคร Docker Hub Account

ก่อนอื่นเลย เราต้องมี Account บน Docker Hub ก่อน ถ้ายังไม่มี สามารถสมัครได้ฟรีที่ https://hub.docker.com/

การสมัครก็เหมือนการสมัคร Account ทั่วไป กรอก Email, Username, และ Password ให้เรียบร้อย จด Username ไว้ด้วยนะครับ เพราะเราจะต้องใช้ในการ Login ผ่าน Command Line ในขั้นตอนต่อไป

Login Docker Hub ผ่าน Command Line

เมื่อมี Account แล้ว เราต้อง Login เข้า Docker Hub ผ่าน Command Line เพื่อให้ Docker รู้ว่าเราเป็นใคร และมีสิทธิ์ที่จะ Push Image ขึ้นไปได้

เปิด Terminal (หรือ Command Prompt) แล้วพิมพ์คำสั่ง:

docker login

Docker จะถาม Username และ Password ของเรา ก็กรอกให้ถูกต้อง

Username: your_dockerhub_username
Password: your_dockerhub_password
Login Succeeded

ถ้า Login สำเร็จ จะมีข้อความ "Login Succeeded" ขึ้นมา

ทำไมต้อง Login ผ่าน Command Line? Docker Client (ที่เราใช้สั่งงาน Docker) ต้องรู้ว่าเราเป็นใครและมีสิทธิ์ที่จะ Push Image ขึ้นไป Docker Hub การ Login ผ่าน Command Line จะสร้าง credentials ที่ Docker Client สามารถใช้ในการยืนยันตัวตนกับ Docker Hub ได้

Tag Image

ก่อนที่เราจะ Push Image ขึ้นไปได้ เราต้อง Tag Image ของเราก่อน การ Tag คือการ "ติดป้าย" ให้กับ Image โดยระบุ Repository (Docker Hub Username) และ Tag (Version) ของ Image

รูปแบบการ Tag Image คือ:

docker tag [IMAGE ID] [DOCKERHUB_USERNAME]/[REPOSITORY_NAME]:[TAG]

อธิบายแต่ละส่วน:

  • [IMAGE ID]: คือ ID ของ Image ที่เราต้องการ Tag สามารถหาได้จากคำสั่ง docker images
  • [DOCKERHUB_USERNAME]: คือ Username ของเราบน Docker Hub
  • [REPOSITORY_NAME]: คือชื่อ Repository ที่เราต้องการสร้างบน Docker Hub (ถ้ายังไม่มี Docker Hub จะสร้างให้ตอน Push)
  • [TAG]: คือ Tag หรือ Version ของ Image (เช่น latest, 1.0, 2.0-beta)

ตัวอย่าง: สมมติว่าเรามี Image ID คือ a1b2c3d4e5f6, Username บน Docker Hub คือ myusername, และต้องการสร้าง Repository ชื่อ mynginx โดยใช้ Tag เป็น latest คำสั่งจะเป็น:

docker tag a1b2c3d4e5f6 myusername/mynginx:latest

หลังจากรันคำสั่งนี้แล้ว ลองใช้คำสั่ง docker images อีกครั้ง จะเห็นว่ามี Image เพิ่มขึ้นมาอีกหนึ่ง Image ที่มี Repository และ Tag ที่เรากำหนดไว้

ทำไมต้อง Tag Image? Docker Hub ใช้ Repository Name และ Tag เพื่อระบุ Image ที่ต้องการดาวน์โหลดหรือ Push ถ้าเราไม่ Tag Image Docker Hub จะไม่รู้ว่า Image นี้ควรจะไปอยู่ตรงไหน และจะ Reject การ Push

แนวปฏิบัติที่ดี:

  • ใช้ Tag ที่สื่อความหมาย: ควรใช้ Tag ที่สื่อความหมายถึง Version หรือ Purpose ของ Image เช่น stable, dev, 1.0.0, nginx-alpine
  • ใช้ latest อย่างระมัดระวัง: latest เป็น Tag Default ที่ Docker จะใช้ ถ้าไม่ได้ระบุ Tag อื่น แต่การใช้ latest อาจทำให้เกิดความสับสนได้ เพราะไม่ได้บอกว่า Image นั้นเป็น Version อะไร ควรหลีกเลี่ยงการใช้ latest ใน Production
  • Tag Image หลาย Tag ได้: เราสามารถ Tag Image เดียวกันด้วยหลาย Tag ได้ เช่น myusername/mynginx:latest และ myusername/mynginx:1.0

Push Image

เมื่อ Tag Image เรียบร้อยแล้ว เราก็สามารถ Push Image ขึ้นไปบน Docker Hub ได้ โดยใช้คำสั่ง:

docker push [DOCKERHUB_USERNAME]/[REPOSITORY_NAME]:[TAG]

ตัวอย่าง: จากตัวอย่างเดิม ถ้าเราต้องการ Push Image myusername/mynginx:latest ขึ้นไปบน Docker Hub คำสั่งจะเป็น:

docker push myusername/mynginx:latest

Docker จะเริ่ม Push Image ขึ้นไป Docker Hub ซึ่งอาจใช้เวลาสักครู่ ขึ้นอยู่กับขนาดของ Image และความเร็วของอินเทอร์เน็ต

เมื่อ Push เสร็จแล้ว ลองเข้าไปดูใน Docker Hub จะเห็นว่ามี Repository ใหม่ชื่อ mynginx พร้อมกับ Image ที่เรา Push ขึ้นไป

ข้อควรระวัง: ถ้า Repository ยังไม่มีอยู่ Docker Hub จะสร้าง Repository ให้โดยอัตโนมัติ แต่ Repository จะเป็น Public โดย Default ถ้าต้องการให้ Repository เป็น Private ต้อง Upgrade Account เป็นแบบเสียเงิน

ทำไมต้อง Push Image? การ Push Image ขึ้น Docker Hub ทำให้คนอื่นสามารถนำ Image ของเราไปใช้ได้ง่ายๆ โดยไม่ต้องสร้าง Image เองตั้งแต่ต้น ช่วยประหยัดเวลาและลดความซับซ้อนในการ Deploy Application

สรุป: ในบทนี้ เราได้เรียนรู้วิธีการแชร์ Docker Image บน Docker Hub ตั้งแต่การสมัคร Account, Login ผ่าน Command Line, Tag Image, และ Push Image การแชร์ Image บน Docker Hub เป็นวิธีที่สะดวกและมีประสิทธิภาพในการเผยแพร่ Application ของเราให้คนอื่นใช้งานได้ง่ายๆ

ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ Docker Compose ซึ่งเป็นเครื่องมือที่ช่วยให้เราจัดการหลาย Docker Container พร้อมกันได้อย่างง่ายดาย

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る