منصوبے کے بارے میں
ڈائیو (dive) ایک کمانড لائن ٹول ہے جو کسی Docker یا OCI امیج کا جائزہ لینے، ہر لیئر کے مواد کا معائنہ کرنے اور امیج کا سائز کم کرنے کے طریقے دریافت کرنے کے لیے استعمال ہوتا ہے۔ یہ Go زبان میں لکھا گیا ہے اور اسے MIT لائسنس کے تحت جاری کیا گیا ہے۔
## بنیادی استعمال
کسی موجودہ امیج کا ٹیگ، آئی ڈی یا ڈائجسٹ کے ذریعے تجزیہ کریں:
```bash
dive <your-image-tag>
```
اسے ڈாக்கر ساکٹ کو ماؤنٹ کر کے براہ راست ڈாக்கر کے ذریعے بھی چلایا جا سکتا ہے:
```bash
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive"
dive nginx:latest
```
امیجز کو بلڈ کیا جا سکتا ہے اور پھر ایک ہی مرحلے میں ان کا فوری تجزیہ کیا جا سکتا ہے:
```bash
dive build -t <some-tag> .
```
## بنیادی خصوصیات
- **لیئر بہ لیئر امیج کا مواد**: دائیں جانب اس لیئر اور تمام پچھلی لیئرز کا مشترکہ مواد دیکھنے کے لیے بائیں جانب ایک لیئر کا انتخاب کریں۔ فائل ٹری میں تیر والے بٹنوں (arrow keys) کی مدد سے نیویگیٹ کیا جا سکتا ہے۔
- **لیئر میں تبدیلی کے اشارے**: جو فائلیں شامل کی گئی ہیں، تبدیل کی گئی ہیں یا ہٹائی گئی ہیں، وہ فائل ٹری میں نمایاں ہوتی ہیں۔ منظر کو کسی خاص لیئر کی تبدیلیوں یا منتخب لیئر تک مجموعی تبدیلیوں کے درمیان تبدیل کیا جا سکتا ہے۔
- **امیج کی کارکردگی کا تخمینہ**: نیچے والا بایاں پین بنیادی لیئر کی معلومات اور ضائع شدہ جگہ کا تخمینہ لگانے والا ایک تجرباتی میٹرک دکھاتا ہے، جیسے کہ لیئرز میں ڈুপ্লিকেট فائلیں، منتقل کی گئی فائلیں، یا نامکمل طور پر ہٹائی گئی فائلیں۔ فیصد اسکور اور کل ضائع شدہ فائل کی جگہ دونوں فراہم کیے جاتے ہیں۔
- **فوری بلڈ اور تجزیہ کے چکر**: بلڈ کرنے کے فوراً بعد امیج کا تجزیہ کرنے کے لیے `docker build` کو `dive build` سے بدل دیں۔
- **سی آئی انٹیگریشن (CI integration)**: ماحول میں `CI=true` سیٹ ہونے پر، UI چھوڑ دیا جاتا ہے اور اصولوں کی بنیاد پر پاس/فیل کے نعرے کے ساتھ امیج کا تجزیہ کیا جاتا ہے۔
- **متعدد امیজ ذرائع**: `--source` آپشن یہ منتخب کرتا ہے کہ امیج کو کہاں سے حاصل کیا جائے۔ تعاون یافتہ ذرائع میں `docker` (پہلے سے طے شدہ)، `docker-archive` (ڈسک سے ڈாக்கر ٹار آرکائیو)، اور `podman` (صرف لینکس) شامل ہیں۔
## سی آئی انٹیگریشن
`CI=true` کے ساتھ ڈائیو کو چلانے سے انٹرایکティブ UI بائی پاس ہو جاتا ہے اور ایگزٹ کوڈ کے ذریعے پاس/فیل کا اشارہ ملتا ہے۔ ریپوزیٹری کے روٹ پر ایک `.dive-ci` فائل اصولوں کی وضاحت کر سکتی ہے:
```yaml
rules:
# اگر کارکردگی X% سے کم ہو تو ناکام ہو جائیں، جسے 0-1 کے درمیان تناسب کے طور پر ظاہر کیا جاتا ہے۔
lowestEfficiency: 0.95
# اگر ضائع شدہ جگہ کم از کم X یا اس سے زیادہ ہو تو ناکام ہو جائیں، جو B, KB, MB, GB میں ظاہر کی جاتی ہے۔
highestWastedBytes: 20MB
# اگر ضائع شدہ جگہ امیج کا X% یا اس سے زیادہ بنتی ہے تو ناکام ہو جائیں، جسے 0-1 کے درمیان تناسب کے طور پر ظاہر کیا جاتا ہے۔
# بیس امیج لیئر کل امیج کے سائز میں شامل نہیں ہے۔
highestUserWastedPercent: 0.20
```
CI کنفیگ پاتھ کو `--ci-config` کے ساتھ اووررائیڈ کیا جا سکتا ہے۔
## تنصیب
تنصیب کے کئی طریقوں کی دستاویزات موجود ہیں:
- **Ubuntu/Debian**: `.deb` ریلیز ڈاؤن لوڈ کریں اور `apt` کے ساتھ انسٹال کریں۔
- **Snap**: `snap install dive`، ڈாக்கر ایگزیکیویبلز اور ڈیمন کے کنکشن کے ساتھ۔ README خبردار کرتا ہے کہ جب ڈாக்கر `apt-get` کے ذریعے انسٹال کیا گیا ہو تو Snap کا طریقہ تجویز نہیں کیا جاتا۔
- **RHEL/CentOS**: `.rpm` ریلیز ڈاؤن لوڈ کریں اور `rpm -i` کے ساتھ انسٹال کریں۔
- **Arch Linux**: اضافی ریپوزیٹری میں دستیاب ہے، `pacman -S dive` کے ذریعے انسٹال کریں۔
- **macOS**: Homebrew (`brew install dive`) یا MacPorts (`sudo port install dive`) کے ذریعے، یا ڈارون ریلیز بلڈ کے ذریعے دستیاب ہے۔
- **Windows**: Chocolatey (`choco install dive`)، Scoop (`scoop install main/dive`)، winget (`winget install --id wagoodman.dive`)، یا ونڈوز ریلیز بلڈ کے ذریعے دستیاب ہے۔
- **Go tools**: `go install github.com/wagoodman/dive@latest` (Go 1.10 یا اس سے اوپر کی ضرورت ہے؛ اس طرح انسٹال ہونے پر ورژن کا آؤٹ پٹ درست نہیں ہو سکتا)۔
- **Nix/NixOS**: `nix-env -iA nixos.dive` یا `nix-env -iA nixpkgs.dive`۔
- **Docker image**: `docker.io/wagoodman/dive` یا `ghcr.io/wagoodman/dive` کو پل کریں اور چلاتے وقت ڈாக்கر ساکٹ کو ماؤنٹ کریں۔
Colima جیسے متبادل رن ٹائمز کے لیے، ڈாக்கر ہوسٹ کو سیٹ کرنے کی ضرورت پڑ سکتی ہے، مثال کے طور پر:
```bash
export DOCKER_HOST=$(docker context inspect -f '{{ .Endpoints.docker.Host }}')
```
## اہم کی بائنڈنگز
انٹرایکٹیভ UI میں باہر نکلنے، لیئر اور فائل ٹری کے مناظر کے درمیان سوئچ کرنے، فائلوں کو فلٹر کرنے، اسکرول کرنے، ڈائریکٹریوں کو سمیٹنے، اور شامل کردہ/ہٹائی گئی/تبدیل شدہ/غیر تبدیل شدہ فائلوں کی مرئیت کو ٹগল کرنے کے لیے کی بائنڈنگز شامل ہیں۔ عام بائنڈنگز میں مناظر کو سوئچ کرنے کے لیے Tab، فائلوں کو فلٹر کرنے کے لیے Ctrl+F، ڈائریکٹری کو سمیٹنے/کھولنے کے لیے Space، اور فائل میں تبدیلی کی قسموں کو دکھانے یا چھپانے کے لیے Ctrl+A/Ctrl+R/Ctrl+M/Ctrl+U شامل ہیں۔
## کنفیگریشن
کسی کنفیگریشن کی ضرورت نہیں ہے، لیکن YAML کنفیگ فائل پہلے سے طے شدہ اقدار کو اووررائیڈ کر سکتی ہے۔ مثال کی ترتیبات میں کنٹینر انجن (`docker` یا `podman`)، ایرر ہینڈلنگ، لاگنگ، کی بائنڈنگز، ڈف ویو ڈیفالٹس، فائل ٹری کا رویہ جیسے کہ سمیٹنے کی حالت اور پین کی چوڑائی، اور لیئر ویو ایگریگیشن ڈیفالٹس شامل ہیں۔ ڈائیو `$XDG_CONFIG_HOME/dive/*.yaml`، `$XDG_CONFIG_DIRS/dive/*.yaml`، `~/.config/dive/*.yaml`، اور `~/.dive.yaml` میں کنفیگ تلاش کرتا ہے؛ `.yml` بھی قبول کیا جاتا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.