hubdocker

โดย อ.บอม กิตติทัศน์ | 06/03/2026 | SiamCafe.net Since 1997

สารบัญ
- HubDocker คืออะไร และเหตุใดจึงสำคัญสำหรับองค์กร
- สถาปัตยกรรมและการทำงานเบื้องหลังของ Docker Hub
- การตั้งค่าและใช้งาน Docker Hub สำหรับองค์กร
- การจัดการความปลอดภัยและการสแกน Image บน Docker Hub
- Docker Hub ในเวิร์กโฟลว์ CI/CD Pipeline
- การจัดการ Container Registry ส่วนตัว (Private Registry) เทียบกับ Docker Hub
- ข้อจำกัด ปัญหา และข้อควรระวังในการใช้งาน Docker Hub
- กรณีศึกษา: การประยุกต์ใช้ Docker Hub ในองค์กรขนาดใหญ่
- การตั้งค่าการแจ้งเตือนและการเฝ้าระวัง (Notification and Monitoring)
- การจัดการ Tags และการ Cleanup Images
- การเพิ่มความปลอดภัยด้วย Image Scanning
HubDocker คืออะไร และเหตุใดจึงสำคัญสำหรับองค์กร
HubDocker เป็นคำศัพท์ที่นิยมใช้เรียก Docker Hub ซึ่งเป็น Container Registry ที่ใหญ่ที่สุดและได้รับความนิยมสูงสุดในระบบนิเวศของ Docker Container Registry ทำหน้าที่เป็นคลังเก็บ (Repository) สำหรับ Docker Images ที่ใช้สร้าง Container โดยองค์กรและนักพัฒนาสามารถแชร์ ดึง (Pull) และอัปโหลด (Push) Image ขึ้นไปได้ ในทางเทคนิคแล้ว Docker Hub เป็นบริการที่ Docker, Inc. ให้บริการแบบคลาวด์ ซึ่งมีบทบาทสำคัญในเวิร์กโฟลว์การพัฒนาและปรับใช้ซอฟต์แวร์แบบสมัยใหม่ เนื่องจากเป็นศูนย์กลางการกระจายซอฟต์แวร์ที่มาตรฐาน
สำหรับองค์กรขนาดใหญ่ Docker Hub ถือเป็นโครงสร้างพื้นฐานที่สำคัญในการสร้าง CI/CD Pipeline โดยทีมพัฒนาจะสร้าง Image จากโค้ดของพวกเขา Push ขึ้นไปยัง Repository ส่วนตัว (Private Repository) บน Docker Hub จากนั้นระบบปรับใช้แบบอัตโนมัติ (เช่น Kubernetes) ก็จะดึง Image นั้นๆ มาจาก Docker Hub ไปรันบน Server ในศูนย์ข้อมูลหรือบนคลาวด์ การมี Registry กลางที่เสถียรและเข้าถึงได้จากทุกที่ช่วยให้กระบวนการนี้เป็นมาตรฐานและลดความซับซ้อนลงได้อย่างมาก
ความสำคัญอีกประการหนึ่งคือการจัดการความปลอดภัย Docker Hub มีฟีเจอร์เช่น Official Images ซึ่งเป็น Image ที่ผ่านการตรวจสอบและดูแลโดย Docker และผู้พัฒนาซอฟต์แวร์ต้นทาง (Vendor) ทำให้องค์กรสามารถวางใจในคุณภาพและความปลอดภัยของซอฟต์แวร์พื้นฐาน เช่น Image ระบบปฏิบัติการ ฐานข้อมูล หรือรันไทม์ต่าง ๆ การพึ่งพาแหล่งที่มาที่น่าเชื่อถือนี้ช่วยลดความเสี่ยงจากการใช้ Image ที่ไม่รู้ที่มา ซึ่งอาจมีช่องโหว่หรือมัลแวร์แฝงอยู่
อย่างไรก็ตาม การใช้ Public Registry อย่าง Docker Hub ก็มาพร้อมกับข้อควรพิจารณาเรื่องความปลอดภัย การพึ่งพาการเชื่อมต่ออินเทอร์เน็ต และการบริหารค่าใช้จ่าย ซึ่งองค์กรจำเป็นต้องจัดการอย่างรอบคอบ
สถาปัตยกรรมและการทำงานเบื้องหลังของ Docker Hub
Docker Hub ทำงานบนสถาปัตยกรรมแบบคลาวด์ โดยมี API เป็นจุดเชื่อมต่อหลักสำหรับการโต้ตอบทั้งหมด ไม่ว่าจะเป็นเว็บเบราว์เซอร์หรือไคลเอนต์ Docker (docker CLI) การทำงานหลักๆ เกี่ยวข้องกับการจัดการ Authentication, Authorization และการดำเนินการกับ Images ผ่าน Docker Registry HTTP API V2
เมื่อผู้ใช้รันคำสั่ง `docker pull ubuntu:20.04` ไคลเอนต์ Docker จะติดต่อไปยัง Docker Hub Registry (registry-1.docker.io) เพื่อขอข้อมูลเกี่ยวกับ Image "ubuntu" ที่มีแท็ก "20.04" กระบวนการนี้เริ่มต้นด้วยการดึง Manifest File ซึ่งเป็นไฟล์ JSON ที่อธิบายเลเยอร์ (Layers) ต่างๆ ที่ประกอบเป็น Image จากนั้น Docker Daemon จะดาวน์โหลดเลเยอร์แต่ละชั้นซึ่งจัดเก็บเป็นบล็อบ (Blob) มาประกอบกันเป็น Image เต็มรูปแบบบนเครื่องผู้ใช้
สำหรับการ Push Image ผู้ใช้ต้องทำการล็อกอินด้วย `docker login` ก่อน จากนั้นใช้คำสั่ง `docker push username/repository:tag` ระบบจะทำการอัปโหลดเลเยอร์ต่างๆ ขึ้นไปยัง Docker Hub หากเลเยอร์ใดมีอยู่แล้วบน Registry (มีค่า Hash เดียวกัน) ระบบจะไม่ทำการอัปโหลดซ้ำ กลไกนี้ช่วยประหยัดพื้นที่จัดเก็บและ bandwidth ได้อย่างมีประสิทธิภาพ
เบื้องหลัง Docker Hub ยังใช้ระบบจัดเก็บข้อมูลแบบกระจายและระบบ Caching ขนาดใหญ่เพื่อให้บริการที่มีความเร็วและความน่าเชื่อถือสูง สามารถรองรับการดาวน์โหลด Image จำนวนมหาศาลจากทั่วโลกได้อย่างต่อเนื่อง
การตั้งค่าและใช้งาน Docker Hub สำหรับองค์กร
การเริ่มต้นใช้งาน Docker Hub สำหรับองค์กรเริ่มจากการสร้างทีมและจัดการสิทธิ์การเข้าถึง ผู้ดูแลระบบสามารถสร้าง Organization Account บนเว็บไซต์ Docker Hub จากนั้นสร้างทีมย่อยๆ (เช่น developers, devops, production) และกำหนดสิทธิ์การอ่าน/เขียนให้กับ Repository ต่างๆ ภายในองค์กรได้อย่างละเอียด
ขั้นตอนการทำงานทั่วไปเริ่มจากการล็อกอินผ่าน Command Line:
docker login
# ใส่ Username และ Password ของคุณ
จากนั้นสร้าง Tag สำหรับ Image ของคุณให้สอดคล้องกับรูปแบบ `username/repository:tag` ก่อน Push ขึ้นไป
docker tag my-local-image:latest mydockerhubusername/my-enterprise-app:v1.0.0
docker push mydockerhubusername/my-enterprise-app:v1.0.0
สำหรับการดึง Image มาใช้งานในสภาพแวดล้อม Production หรือ Staging ก็สามารถทำได้ด้วยคำสั่ง Pull ธรรมดา:
docker pull mydockerhubusername/my-enterprise-app:v1.0.0องค์กรสามารถใช้ Webhook เพื่อเชื่อมต่อ Docker Hub กับระบบ CI/CD ของตนได้ เช่น ตั้งค่า Webhook เพื่อส่ง Notification ไปยัง Jenkins เมื่อมี Image ใหม่ถูก Push ขึ้นมา ซึ่งจะทริกให้ระบบเริ่มทำการทดสอบหรือปรับใช้แบบอัตโนมัติได้ทันที
การจัดการความปลอดภัยและการสแกน Image บน Docker Hub
ความปลอดภัยบน Docker Hub เป็นประเด็นสำคัญที่สุดประเด็นหนึ่งสำหรับองค์กร Docker Hub มีฟีเจอร์ Docker Security Scanning (ซึ่งสำหรับ Repository ส่วนตัวมักเป็นฟีเจอร์เสียเงิน) ที่จะทำการสแกนแต่ละเลเยอร์ของ Image เพื่อค้นหาช่องโหว่ที่รู้จัก (Known Vulnerabilities) โดยอัตโนมัติเมื่อมีการ Push Image ใหม่ขึ้นไป ระบบจะเปรียบเทียบกับฐานข้อมูลช่องโหว่จากผู้ให้บริการหลายรายและรายงานผลบน Dashboard
นโยบายการเข้าถึงเป็นอีกเครื่องมือสำคัญ องค์กรควรสร้างทีมและกำหนดสิทธิ์โดยใช้หลักการ Least Privilege ตัวอย่างเช่น ทีมพัฒนาอาจมีสิทธิ์ Push Image ไปยัง Repository "staging" ได้ แต่มีสิทธิ์เพียงอ่าน (Pull) สำหรับ Repository "production" เท่านั้น ส่วนทีม Operations อาจมีสิทธิ์เขียนสำหรับทั้งสอง Repository
การใช้ Official Images หรือ Verified Publisher Images จากบริษัทที่เชื่อถือได้ (เช่น MongoDB, Nginx, Redis) เป็นแนวปฏิบัติที่ดี เนื่องจาก Image เหล่านี้ได้รับการดูแลและอัปเดตความปลอดภัยจากผู้พัฒนาซอฟต์แวร์โดยตรง องค์กรควรหลีกเลี่ยงการดึง Image จากแหล่งที่ไม่รู้จักหรือไม่มีชุมชนรองรับ
การสร้าง Image ขององค์กรเองควรยึดหลัก Secure Coding และใช้ Base Image ที่ปลอดภัย เช่น ` alpine` ที่มีขนาดเล็กและมีช่องโหว่น้อยกว่าแทนที่จะใช้ Base Image ขนาดใหญ่เต็มรูปแบบ การรัน Container ด้วย User ที่ไม่ใช่ root และการลบแพ็กเกจที่ไม่จำเป็นออกไปหลังจากติดตั้งก็ช่วยลดความเสี่ยงได้มาก
Docker Hub ในเวิร์กโฟลว์ CI/CD Pipeline
Docker Hub ทำหน้าที่เป็นจุดเชื่อมต่อกลาง (Articulation Point) ที่สำคัญในเวิร์กโฟลว์ CI/CD แบบสมัยใหม่ กระบวนการทำงานเริ่มจากเมื่อนักพัฒนาทำ Push Code ขึ้นไปยัง Repository บน Git ระบบ CI (เช่น Jenkins, GitLab CI, GitHub Actions) จะถูกทริกให้ทำงาน
ระบบ CI จะทำการ Build Docker Image จาก Dockerfile และ Source Code จากนั้นทำการทดสอบซอฟต์แวร์ภายใน Container นั้น หากการทดสอบผ่านทั้งหมด ระบบจะทำการ Push Image ที่ผ่านการทดสอบแล้วขึ้นไปยัง Docker Hub โดยมักจะตั้ง Tag ด้วยหมายเลข Build หรือ Git Commit Hash เพื่อให้สามารถติดตามได้
# ตัวอย่างขั้นตอนใน Jenkinsfile pipeline { agent any stages { stage('Build') { steps { sh 'docker build -t my-app:${BUILD_ID} .' } } stage('Test') { steps { sh 'docker run my-app:${BUILD_ID} ./run-tests.sh' } } stage('Push') { steps { sh 'docker tag my-app:${BUILD_ID} mydockerhubusername/my-app:${BUILD_ID}' withCredentials([usernamePassword(credentialsId: 'dockerhub-creds', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { sh 'docker login -u $DOCKER_USER -p $DOCKER_PASS' sh 'docker push mydockerhubusername/my-app:${BUILD_ID}' } } } } }จากนั้นระบบ CD หรือ Orchestration Tool (เช่น Kubernetes, Docker Swarm) ในสภาพแวดล้อมเป้าหมาย (Staging/Production) จะดึง Image ที่มี Tag เฉพาะนี้จาก Docker Hub มาเพื่อทำการปรับใช้ การใช้ Docker Hub ทำให้มั่นใจได้ว่าทุกสภาพแวดล้อมใช้ Build ของซอฟต์แวร์ที่เหมือนกันทุกประการ
การจัดการ Container Registry ส่วนตัว (Private Registry) เทียบกับ Docker Hub
แม้ Docker Hub จะสะดวก แต่หลายองค์กรก็เลือกใช้ Private Registry ที่ติดตั้งภายในเครือข่ายตัวเองควบคู่ไปด้วยหรือแทนที่ Docker Hub อย่างสมบูรณ์ ข้อดีข้อเสียเปรียบเทียบกันได้ดังตารางต่อไปนี้
| เกณฑ์เปรียบเทียบ | Docker Hub (Public/Private Repo) | Private Registry (e.g., Harbor, Nexus) |
|---|---|---|
| ต้นทุน | มีค่าใช้จ่ายสำหรับ Private Repo และฟีเจอร์ขั้นสูง | ต้นทุนฮาร์ดแวร์/คลาวด์และค่าเสียโอกาสในการบำรุงรักษา |
| ความปลอดภัย | เสี่ยงต่อการโจมตีจากภายนอก ต้องเชื่อมต่ออินเทอร์เน็ต | ควบคุมได้เต็มที่ ทำงานในเครือข่ายภายในได้ |
| ประสิทธิภาพ | ดาวน์โหลดช้าลงหากเซิร์ฟเวอร์อยู่ห่างจาก Docker Hub | ความเร็วสูงมาก เนื่องจากอยู่ใน LAN/เครือข่ายเดียวกัน |
| การพึ่งพา | เสี่ยงต่อการ Downtime ของบริการจาก Docker, Inc. | ควบคุมความพร้อมใช้งานได้ด้วยตนเอง |
| ฟีเจอร์การจัดการ | มีฟีเจอร์สำเร็จรูปครบครัน | ต้องตั้งค่าและปรับแต่งฟีเจอร์ต่างๆ เองทั้งหมด |
องค์กรมักใช้กลยุทธ์ Hybrid โดยเก็บ Base Images หรือ Open Source Images ทั่วไปจาก Docker Hub (Public) แต่เก็บ Image ของแอปพลิเคชันภายในองค์กรที่สำคัญและมีความลับทางการค้าไว้ใน Private Registry ภายในเท่านั้น
การตั้งค่าให้ Docker Daemon ดึงจากหลาย Registry ทำได้โดยการตั้งค่า Registry Mirror หรือกำหนดชื่อ Image เต็มรูปแบบเมื่อดึงหรือ Push
ข้อจำกัด ปัญหา และข้อควรระวังในการใช้งาน Docker Hub
การใช้งาน Docker Hub ในองค์กรมีข้อควรระวังหลายประการที่ต้องจัดการเพื่อหลีกเลี่ยงปัญหาด้านความปลอดภัยและความต่อเนื่องของธุรกิจ
ประการแรกคือ Rate Limiting Docker Hub กำหนดขีดจำกัดการดึงข้อมูลสำหรับบัญชีฟรี (Anonymous และ Free Tier) ตัวอย่างเช่น บัญชีฟรีสามารถดึง Image ได้ไม่เกิน 100 ครั้งในระยะเวลา 6 ชั่วโมง ซึ่งอาจสร้างปัญหาใหญ่หากระบบปรับใช้อัตโนมัติของคุณพยายามดึง Image จำนวนมากในเวลาอันสั้นและถูกบล็อก การอัปเกรดเป็นบัญชี Paid Plan เป็นวิธีแก้ปัญหาที่ตรงจุดที่สุด
ประการที่สองคือความเสี่ยงด้านความปลอดภัย มีกรณีศึกษาเกิดขึ้นจริงเมื่อปี 2021 ที่มีผู้ไม่หวังดีสร้าง Image จำนวนมากที่มีชื่อคล้ายกับ Official Image (เช่น "node" กับ "nodejs") และฝังคริปโตมินิงมัลแวร์ลงไป ผู้ใช้ที่พิมพ์ชื่อผิดอาจดึง Image ที่เป็นอันตรายมาโดยไม่รู้ตัว องค์กรควรฝึกอบรมและกำหนดนโยบายให้ดึง Image เฉพาะจากแหล่งที่เชื่อถือได้เท่านั้น
ประการที่สามคือการพึ่งพา Vendor Lock-in การออกแบบระบบที่ผูกติดกับ Docker Hub มากเกินไปอาจทำให้การโยกย้ายไปยัง Registry อื่นในอนาคตทำได้ยาก ควรออกแบบให้สามารถเปลี่ยน Registry ปลายทางได้โดยการปรับ Configuration น้อยที่สุด
สุดท้ายคือการจัดการ Credentials การเก็บ Username และ Password ในไฟล์ข้อความหรือใน Script เป็นเรื่องต้องห้าม ควรใช้ฟีเจอร์ Credential Store ของ Docker หรือใช้ Access Token แทน Password และจัดการความลับเหล่านี้ผ่านระบบจัดการความลับ (Secrets Management) อย่างเหมาะสม
กรณีศึกษา: การประยุกต์ใช้ Docker Hub ในองค์กรขนาดใหญ่
พิจารณากรณีศึกษาของบริษัทด้านการเงินแห่งหนึ่งที่มีทีมพัฒนากว่า 20 ทีม ผลิตไมโครเซอร์วิสส์มากกว่า 100 บริการ พวกเขาใช้ Docker Hub เป็น Registry กลางร่วมกับ Private Registry ที่ติดตั้งภายใน
เวิร์กโฟลว์การทำงานมีดังนี้ ทีมพัฒนาทุกทีมใช้บัญชี Docker Hub Organization ร่วมกัน แต่ละทีมจะมี Repository ส่วนตัวของตัวเองสำหรับเก็บ Image ที่ยังอยู่ระหว่างการพัฒนาและทดสอบ เมื่อ Image ผ่านการทดสอบทั้งหมดและพร้อมสำหรับ Staging ทีมจะ Push Image นั้นไปยัง Private Registry ภายในองค์กรซึ่งเชื่อมต่อกับสภาพแวดล้อม Staging และ Production ที่ทำงานบน Kubernetes Cluster
พวกเขาใช้ Docker Hub เป็นแหล่งสำหรับ Base Images หลักทั้งหมด เช่น ` openjdk`, `node`, `python` โดยใช้ Image จาก Verified Publishers เท่านั้น เพื่อลดความเสี่ยงด้านความปลอดภัย พวกเขามี Job ใน Jenkins ที่รันทุกวันเพื่อตรวจสอบว่ามี Base Image ใหม่หรือมีช่องโหว่ใหม่ที่รายงานหรือไม่ และทำการ Rebuild Image ของตัวเองหากจำเป็น
ปัญหาหลักที่พวกเขาเจอคือ Rate Limiting เนื่องจากจำนวนการดึง Image จากทีมต่างๆ มีสูงมาก พวกเขาจึงตัดสินใจใช้ Docker Hub Proxy Cache ที่ชื่อ "Harbor" ติดตั้งภายในเครือข่าย ระบบของพวกเขาจะดึง Image จาก Docker Hub ผ่าน Harbor ครั้งแรก และ Harbor จะทำหน้าที่เก็บ Cache ไว้ การดึงครั้งต่อไปจาก Developer หรือ CI Server คนอื่นๆ จะดึงจาก Cache ภายในซึ่งเร็วกว่ามากและไม่นับรวมในโควต้า Rate Limiting ของ Docker Hub
บทเรียนสำคัญจากกรณีศึกษานี้คือการผสมผสานระหว่าง Public Registry และ Private Registry อย่างชาญฉลาดสามารถให้ความสมดุลระหว่างความสะดวก ความเร็ว และความปลอดภัยได้ การวางแผนล่วงหน้าเรื่อง Rate Limiting และการจัดการ Base Images เป็นปัจจัยสำคัญต่อความสำเร็จ
การตั้งค่าการแจ้งเตือนและการเฝ้าระวัง (Notification and Monitoring)
การติดตามการทำงานของ Docker Hub เป็นสิ่งสำคัญเพื่อให้มั่นใจว่ากระบวนการ CI/CD ทำงานอย่างต่อเนื่อง ควรตั้งค่าการแจ้งเตือนจาก Docker Hub สำหรับเหตุการณ์สำคัญ เช่น การ Push Image สำเร็จหรือล้มเหลว การพบช่องโหว่ความปลอดภัยใน Image ที่ใช้งาน และการเข้าใกล้โควต้า Rate Limiting นอกจากนี้ควรใช้เครื่องมือเฝ้าระวัง เช่น Prometheus หรือ Datadog เพื่อติดตามการดึง Image จาก Registry ภายในและภายนอก ตรวจสอบประสิทธิภาพและใช้ทรัพยากรอย่างเหมาะสม
การจัดการ Tags และการ Cleanup Images
เมื่อเวลาผ่านไป Repository ใน Docker Hub อาจเต็มไปด้วย Image หลายเวอร์ชันที่ล้าสมัยหรือไม่ได้ใช้งาน ควรกำหนดนโยบายการจัดการแท็ก (Tag) ที่ชัดเจน เช่น ใช้ Semantic Versioning และใช้ Stable Tag สำหรับการ Production เพื่อให้ง่ายต่อการติดตาม ควรใช้ฟีเจอร์การ Cleanup อัตโนมัติของ Docker Hub หรือใช้สคริปต์ใน CI/CD Pipeline เพื่อลบ Image ที่เก่ากว่าหรือไม่ได้ใช้งานออกไป เป็นการลดพื้นที่จัดเก็บและรักษาความเป็นระเบียบเรียบร้อยของ Registry
การเพิ่มความปลอดภัยด้วย Image Scanning
Image Scanning เป็นขั้นตอนสำคัญที่ช่วยระบุช่องโหว่ความปลอดภัยใน Container Images ควรใช้เครื่องมือ Scan Image เช่น Docker Scout, Trivy หรือ Clair ที่สามารถผสานรวมกับ Docker Hub และ CI/CD Pipeline ได้ ตั้งค่าให้การ Scan ทำงานอัตโนมัติทุกครั้งที่มีการ Push Image ใหม่ และกำหนดนโยบายห้าม Deployment หากพบช่องโหว่ระดับร้ายแรง (Critical) กระบวนการนี้ช่วยลดความเสี่ยงและสร้างความมั่นใจในความปลอดภัยของ Container ที่ใช้งาน
วิดีโอที่เกี่ยวข้อง
คำถามที่พบบ่อย (FAQ)
Q: hubdocker คืออะไรและทำงานอย่างไร
A: hubdocker คือบริการ Container Registry ที่ใช้เก็บและจัดการ Docker images โดยเฉพาะ ระบบทำงานเป็นศูนย์กลางให้ developers อัพโหลด แชร์ และดึง container images ได้ผ่าน Docker CLI หรือ API ใช้เทคโนโลยี Docker Hub API เป็นพื้นฐานทำให้จัดการ version และ access control ได้ง่าย
Q: hubdocker ต่างจาก Docker Hub อย่างไร
A: hubdocker มักเป็น private registry ที่ติดตั้งภายในองค์กร ส่วน Docker Hub เป็น public registry ของบริษัท Docker โดยตรง hubdocker ใช้สำหรับเก็บ proprietary images ที่ต้องการความปลอดภัย ในขณะที่ Docker Hub จะมี public images ให้ใช้งานทั่วไป
Q: ทำไมองค์กรควรใช้ hubdocker แทน public registry
A: องค์กรใช้ hubdocker เพื่อเพิ่ม security และ compliance เนื่องจากควบคุม infrastructure ได้เต็มรูปแบบ ลดการพึ่งพาอินเทอร์เน็ต external และป้องกันการรั่วไหลของ source code ยังช่วยลด latency ผ่านการดึง images ภายใน network
Q: hubdocker รองรับ Image Scanning และ Vulnerability Checks หรือไม่
A: hubdocker รุ่นใหม่ๆ รองรับ image scanning โดยใช้เครื่องมือเช่น Trivy หรือ Clair ในการตรวจสอบ vulnerabilities อัตโนมัติ สามารถตั้งค่าให้ scan ทุกครั้งที่ push image ใหม่และรายงานผลผ่าน dashboard หรือ API
Q: สามารถ integrate hubdocker กับ CI/CD Pipeline ได้อย่างไร
A: integrate hubdocker กับ CI/CD ทำได้ผ่าน Docker login และ push commands ใน pipeline scripts tools อย่าง Jenkins หรือ GitLab CI สามารถดึง images จาก hubdocker มา build และ deploy โดยใช้ credentials จาก vault หรือ environment variables