Docker Images & Registry
6. What is Docker Hub, and how do image registries work?
Docker Hub হলো Docker-এর official public container registry — মূলত এটি Docker Image-এর জন্য একটি cloud-based repository। GitHub যেমন source code store এবং share করার জায়গা, Docker Hub তেমনি Docker Image store এবং share করার জায়গা।
GitHub : Source Code → Push/Pull → github.com
Docker Hub: Docker Image → Push/Pull → hub.docker.com
**Image Registry** কাজ করে অনেকটা GitHub-এর মতো, তবে code-এর বদলে এখানে Docker images থাকে।
Registry-র কাজের ধারা:
Developer → docker build → Local Image
Local Image → docker push → Registry (Docker Hub)
অন্য Server → docker pull → Registry থেকে Image নামিয়ে আনে
অন্য Server → docker run → Container চালু হয়
Registry মূলত একটি HTTP-based storage server যেখানে:
- প্রতিটি image একটি repository-তে থাকে
- প্রতিটি repository-তে একাধিক tag থাকতে পারে
- Images আসলে একাধিক layer দিয়ে তৈরি, যা আলাদাভাবে store হয়
What is the difference between a public and private Docker registry?
| বিষয় | Public Registry | Private Registry |
|---|---|---|
| Access | যে কেউ pull করতে পারে | শুধু authorized user-রা access পায় |
| Visibility | সবার কাছে দৃশ্যমান | শুধু নির্দিষ্ট team/org দেখতে পায় |
| ব্যবহার | Open-source projects, official images | Proprietary codebase, internal tools |
| খরচ | বিনামূল্যে | Docker Hub-এ paid plan লাগে (self-hosted হলে infrastructure খরচ) |
| উদাহরণ | nginx, ubuntu, python | কোম্পানির নিজস্ব app image |
# Public image pull (কোনো authentication লাগে না)
docker pull nginx
# Private image pull (login করতে হয়)
docker pull mycompany.registry.io/backend-api:v2.1
How do you push and pull images from Docker Hub?
ধাপ ১ — Docker Hub-এ Login করো
docker login
# Username এবং Password চাইবে
ধাপ ২ — Image Build করো
docker build -t my-app:1.0 .
ধাপ ৩ — Image-কে Proper Tag দাও
Docker Hub-এ push করতে image-এর নাম হতে হবে:
<dockerhub-username>/<repository-name>:<tag>
docker tag my-app:1.0 johndoe/my-app:1.0
ধাপ ৪ — Docker Hub-এ Push করো
docker push johndoe/my-app:1.0
ধাপ ৫ — যেকোনো জায়গা থেকে Pull করো
docker pull johndoe/my-app:1.0
মনে রাখো: Pull করতে public image হলে login লাগে না, কিন্তু private image হলে অবশ্যই
docker loginকরতে হবে।
What is the difference between Docker Hub and a self-hosted registry like Harbor?
| বিষয় | Docker Hub | Harbor (Self-Hosted) |
|---|---|---|
| Host করে | Docker Inc. (cloud) | তুমি নিজে (on-premise / cloud VM) |
| Control | সীমিত control | সম্পূর্ণ নিজের নিয়ন্ত্রণ |
| Security Scanning | সীমিত (paid plan-এ ভালো) | Built-in Trivy/Clair scanner |
| Rate Limit | আছে (anonymous pull সীমিত) | নেই |
| RBAC | সীমিত | Granular Role-Based Access Control |
| খরচ | Free tier আছে, paid plan লাগে বড় ব্যবহারে | Infrastructure খরচ, কিন্তু software free |
| Compliance | Data বাইরে থাকে | Data নিজের infrastructure-এ থাকে |
| উপযুক্ত | ছোট টিম, open-source | Enterprise, regulated industries |
Harbor ব্যবহার করবে যখন:
- Data sovereignty দরকার (data দেশের বাইরে যেতে পারবে না)
- Advanced security scanning চাই
- Docker Hub-এর rate limit সমস্যা হচ্ছে
- বড় organization যেখানে fine-grained access control দরকার
How do image tags work, and what is the significance of the latest tag?
Tag হলো একটি image-এর label বা version identifier। একই image-এর বিভিন্ন version আলাদা tag দিয়ে চেনা যায়।
myapp:1.0 # Version 1.0
myapp:1.1 # Version 1.1
myapp:stable # Stable release
myapp:latest # সর্বশেষ (?)