Unter Windows habe ich oft das Problem, dass ich Shell-Skripte von Linux bzw. Mac ausführen möchte, die Windows PowerShell aber leider nicht alle Befehle unterstützt. Für diesen Fall habe ich ein kleines Image gebaut, das ich je nach Anwendungsfall erweitere. Hier ist ein Beispiel für ein Image, das eine git-Unterstützung bietet:
FROM alpine:latest RUN apk update RUN apk add git RUN mkdir '/var/myshell/' WORKDIR '/var/myshell/'
Das Image kann so gebaut werden:
docker build . -t myshell
In der PowerShell wechselt man in das Verzeichnis, das man pimpen möchte und führt folgenden Befehl aus:
docker run -it -v %cd%:/var/myshell --name mysh myshell
Damit startet man den Container als mysh und landet direkt in der Shell des Containers. Das WORKDIR des Containers zeigt auf das aktuelle Windows-Verzeichnis (seltsam angegeben über %cd%) und wir können Linux Tools in dem Verzeichnis über die Container-Console nutzen. Also zum Beispiel um alle Branches aufzulisten, die bug im Namen haben:
git branch | grep bug
Cool 😁
Die Container-Shell verlasst ihr mit:
exit
Wenn der Container beendet ist, könnt ihr ihn neu starten und landet direkt wieder in der Shell über:
docker start mysh && docker exec -it mysh sh
Ihr könnt auch ganze Shell-Skripte ausführen, die ihr im Verzeichnis abgelegt habt:
sh <script-filename>
Mit dem Windows Subsystem für Linux (WSL) können wir eine komplette Linux-Umgebung auf unserem Windows Rechner ausführen. Informationen dazu gibt es auf den entsprechenden Microsoft Seiten.