Ref: https://gemini.google.com/app/4a431e338a0c26c2
การนำ Docker Image ที่ build เรียบร้อยแล้วไปเก็บไว้ใน Docker Registry (เช่น Docker Hub) เพื่อดึงกลับมาใช้ในอนาคต มีขั้นตอนหลัก 4 ขั้นตอน ดังนี้ครับ:
1. เข้าสู่ระบบ Docker Hub ผ่าน Terminal
ก่อนอัปโหลด ต้องล็อกอินเข้าบัญชี Docker Hub ของคุณก่อน:
docker login
ระบบจะให้กรอก Username และ Password (หรือ Personal Access Token ของ Docker Hub)
2. ตั้งชื่อ Tag ให้ตรงกับ Repository บน Docker Hub
Docker กำหนดว่า Image ที่จะ push ขึ้น Docker Hub ได้ ชื่อ Image ต้องขึ้นต้นด้วย Username ของคุณบน Docker Hub เสมอ
สมมติว่า:
- Image ที่เพิ่ง build ไว้ ตรวจสอบโดย docker image ls ชื่อ:
my-php-image:latest - Docker Hub Username ของคุณคือ:
yourusername - ต้องการตั้งชื่อ repository ว่า:
php7.4-apache-customและแท็กv1
ให้ใช้คำสั่ง
docker tag:docker tag my-php-image:latest yourusername/php7.4-apache-custom:v1
(หากต้องการแท็กเป็น
latest เพิ่มด้วย สามารถรัน: docker tag my-php-image:latest yourusername/php7.4-apache-custom:latest)3. Push Image ขึ้น Docker Hub
ส่ง Image ขึ้นไปยัง Repository ของคุณ:
docker push yourusername/php7.4-apache-custom:v1
เมื่ออัปโหลดเสร็จ คุณสามารถเข้าไปตรวจสอบในหน้าเว็บ hub.docker.com ในโปรไฟล์ของคุณ จะพบ Image ปรากฏอยู่
4. การดึง (Pull) และเรียกใช้งานในเครื่องอื่นหรือครั้งถัดไป
เมื่อย้ายไปเครื่องอื่น หรือต้องการนำมาใช้งานใหม่:
ดึง Image ลงมาเก็บในเครื่อง:
docker pull yourusername/php7.4-apache-custom:v1
รัน Container จาก Image ที่ดึงมา:
docker run -d -p 80:80 --name my-web-app yourusername/php7.4-apache-custom:v1
หรือใช้ในไฟล์
docker-compose.yml:version: '3.8'
services:
web:
container_name: my-web-app
image: yourusername/php7.4-apache-custom:v1
ports:
- "80:80"
volumes:
- ./src:/var/www/html
restart: unless-stopped
ข้อควรระวังเรื่องความปลอดภัย:
- หาก Image ดังกล่าวมีโค้ดส่วนตัว, ซอร์สโค้ดที่มีช่องโหว่สำหรับการทดสอบ หรือมี credentials/ไฟล์คอนฟิกลับอยู่ข้างใน ให้ตั้งค่า Repository บน Docker Hub เป็น Private เสมอ (หรือใช้บริการ Container Registry ภายใน เช่น Harbor, GitHub Packages (GHCR), หรือ AWS ECR) เพื่อป้องกันไม่ให้บุคคลภายนอกเข้าถึงได้
No comments:
Post a Comment