Web Analytics

oci2git

⭐ 374 stars Dutch by Virviil

🌐 Taal

OCI2Git

[Documentatie][documentation] Crates.io Licentie

Downloads

[//]: # (mock voor toekomstige test.yaml) [//]: # ([![Teststatus](https://img.shields.io/github/actions/workflow/status/Virviil/oci2git/rust.yml?branch=master&event=push&label=Test)](https://github.com/Virviil/oci2git/actions))

Een Rust-applicatie die containerimages (Docker, enz.) omzet naar Git-repositories. Elke containerlaag wordt weergegeven als een Git-commit, waarbij de geschiedenis en structuur van het originele image behouden blijven.

Demo van OCI2Git die het nginx-image converteert

Functies

Gebruikssituaties

Laagvergelijking

Bij het oplossen van containerproblemen kun je de krachtige vergelijkingstools van Git gebruiken om precies te zien wat er veranderd is tussen twee lagen. Door git diff uit te voeren tussen commits kunnen engineers exact zien welke bestanden zijn toegevoegd, gewijzigd of verwijderd, wat het veel eenvoudiger maakt om de impact van elke Dockerfile-instructie te begrijpen en problematische wijzigingen te vinden. Voorbeeld van laagvergelijking

Herkomstbepaling

Met git blame kunnen ontwikkelaars snel bepalen welke laag een specifiek bestand of code-regel heeft geïntroduceerd. Dit is bijzonder waardevol bij het diagnosticeren van problemen met configuratiebestanden of afhankelijkheden. In plaats van elke laag handmatig te inspecteren, kun je direct de oorsprong van een bestand terugvinden tot de bronlaag en bijbehorende Dockerfile-instructie.

Volgen van levenscyclus van bestand

OCI2Git stelt je in staat om de reis van een specifiek bestand door de geschiedenis van een containerimage te volgen. Je kunt zien wanneer een bestand voor het eerst is aangemaakt, hoe het in lagen is gewijzigd en of/wanneer het uiteindelijk is verwijderd. Dit uitgebreide overzicht helpt om de evolutie van bestanden te begrijpen zonder handmatig wijzigingen door tientallen lagen te moeten volgen.

Om de geschiedenis van een bestand in je containerimage te volgen — inclusief wanneer het voor het eerst verscheen, is veranderd of verwijderd — kun je na conversie deze Git-commando’s gebruiken:

# Full history of a file (including renames)
git log --follow -- /rootfs/my/file/path

First appearance (i.e. creation) - see which layer introduced the file

git log --diff-filter=A -- /rootfs/my/file/path

All changes made to the file (with diffs)

git log -p --follow -- /rootfs/my/file/path

When the file was deleted

git log --diff-filter=D -- /rootfs/my/file/path

Show short commit info (concise layer history)

git log --follow --oneline -- /rootfs/my/file/path

Deze commando's maken het eenvoudig om de volledige geschiedenis van elk bestand over containerlagen te traceren zonder de complexiteit van handmatig laag-tarballs uitpakken en vergelijken.

Analyse over Meerdere Lagen

Soms zijn de meest inzichtelijke vergelijkingen afkomstig van het onderzoeken van wijzigingen over meerdere niet-opeenvolgende lagen. Met OCI2Git kun je de vergelijkingstools van Git gebruiken om te analyseren hoe componenten zich hebben ontwikkeld over verschillende build-stadia, waardoor patronen zichtbaar worden die onzichtbaar blijven bij het bekijken van alleen aangrenzende lagen.

Laagverkenning

Door git checkout te gebruiken om naar een specifieke commit te gaan, kun je het container-bestandssysteem exact bekijken zoals het op dat moment in die laag bestond. Dit stelt ontwikkelaars in staat om de precieze staat van bestanden en mappen te inspecteren op elk punt in het creatieproces van de image, wat onschatbare context biedt bij het debuggen of onderzoeken van containergedrag. Checkout naar vorige commit

Analyse van Meerdere Images

Bij het werken met meerdere containerimages die een gemeenschappelijke oorsprong delen, maakt OCI2Git intelligent alleen branches aan wanneer de images daadwerkelijk uiteenlopen. Hierdoor kun je meerdere gerelateerde images in één repository analyseren terwijl hun gedeelde geschiedenis behouden blijft.

# Convert first image to create the base repository
oci2git postgres:16.9-alpine3.21 -o alp

Convert second image to the same output folder

oci2git nginx:1.28.0-alpine-slim -o alp

OCI2Git detecteert automatisch gedeelde lagen tussen images en creëert een vertakkingsstructuur die hun gemeenschappelijke basis weerspiegelt. De Git-geschiedenis toont:

Deze aanpak is bijzonder waardevol voor: Structuur van een multi-image repository met gedeelde basis en uiteenlopende takken

Aanvullende Gebruikstoepassingen

Installatie

Vanuit Broncode

# Clone the repository
git clone https://github.com/virviil/oci2git.git
cd oci2git

Install locally

cargo install --path .

Van Crates.io

cargo install oci2git

Gebruik

oci2git [OPTIONS] 

Argumenten: Naam van het te converteren image (bijv. 'ubuntu:latest') of pad naar tarball bij gebruik van de tar-engine

Opties: -o, --output Uitvoermap voor Git-repository [standaard: ./container_repo] -e, --engine Te gebruiken container-engine (docker, nerdctl, tar) [standaard: docker] -h, --help Print help-informatie -V, --version Print versie-informatie

Omgevingsvariabelen: TMPDIR Stel deze omgevingsvariabele in om de standaardlocatie voor tussentijdse gegevensverwerking te wijzigen. Dit is platformafhankelijk (bijv. TMPDIR op Unix/macOS, TEMP of TMP op Windows).

Voorbeelden

Gebruik van Docker-engine (standaard):

oci2git -o ./ubuntu-repo ubuntu:latest

Een reeds gedownloade image-tarball gebruiken:

oci2git -e tar -o ./ubuntu-repo /path/to/ubuntu-latest.tar

De tar-engine verwacht een geldig OCI-formaat tarball, die meestal wordt aangemaakt met docker save:

# Create a tarball from a local Docker image
docker save -o ubuntu-latest.tar ubuntu:latest

Convert the tarball to a Git repository

oci2git -e tar -o ./ubuntu-repo ubuntu-latest.tar
Dit maakt een Git-repository aan in ./ubuntu-repo met de volgende inhoud: De Git-geschiedenis weerspiegelt de laaggeschiedenis van de container:

Repositorystructuur

repository/
├── .git/
├── Image.md     # Complete image metadata
└── rootfs/      # Filesystem content from the container

Vereisten

Licentie

MIT

[documentatie]: https://docs.rs/oci2git/

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-12 ---