Docker
Diese Hilfe beschreibt kurz die Installation, Einrichtung und Nutzung von Docker Engine.
Eine Übersicht über die Powershell Befehle finden Sie auf dieser Seite im unteren Bereich.
Im DevOps Projekt Team CB
befindet sich die Repo Docker Scripts.
Mit dem Script ist es möglich, einen Docker Container ganz einfach zu erstellen (mit Image Beispielen).
Vorweg
Damit die neuste Docker Application auch sauber läuft, muss sicher gestellt werden, dass Windows mindestens auf Version 1903 geupdatet wird.
Falls bei der Installation Hyper-V nicht automatisch aktiviert wird, kann man dies über das BIOS oder Windows Feature
aktiviert werden.
Docker Engine
Der Docker Desktop wird nicht mehr benutzt, da dieser für Unternehmen ab dem 31. Januar 2022 kostenpflichtig ist. Deshalb muss jetzt auf den Docker Engine umgestellt werden. Die Docker Engine ist nur ein Teil des Docker Desktop.
Docker Engine ist eine Open-Source-Containerisierungstechnologie zum Erstellen und Containerisieren Ihrer Anwendungen. Docker Engine fungiert als Client-Server-Anwendung.
Installation
Da der Docker Desktop nicht mehr benutzt wird, wird hier die Installation der Docker Engine vorgezeigt.
Wenn der Docker Desktop noch auf dem Computer vorhanden ist, so muss dieser deinstalliert werden. Alle Container müssen auch noch gelöscht werden
.
Als kleine Hilfe, kann man sich direkt schon die Extension "Docker" in Visual Studio Code runterladen. Dies ermöglicht später, dass erstellen,löschen, starten oder stoppen von Docker Containern.
Nun geht es los mit der Installation.
Schritt 1 : Man öffnet die Website(https://github.com/microsoft/nav-arm-templates/blob/master/InstallOrUpdateDockerEngine.ps1) und kopiert sich das Script, welches auf der Seite angegeben ist.
Schritt 2 : Man öffnet die Windows Powershell ISE(als Administrator ausführen)
und fügt das kopierte Script in den Konsolenbereich ein.
Mit "Enter"
bestätigt man das Script.
Wenn die Installation erfolgreich abgeschlossen ist, muss für die Nutzung von Docker Engine der Rechner neu gestartet werden.
Schritt 3 : Damit man mit Docker-Images von acadon(z.B. Sidebar) arbeiten kann, muss man eine neue Datei erstellen, die man deamon.json
nennen soll. Dann kopiert man den Inhalt, der unter "Add deamon.json" auf der Website(http://docs.acadon.de/timber/1.0.0.0/dev/howdoi/InstallDocker.html) steht.
Diesen fügt man dann in die vorher erstellte Datei ein.
Dann speichert man die
deamon.json
unter C:\ProgramData\docker\config\
ab.
Der Docker Engine Service muss dann wieder neu gestartet werden.
BcContainerHelper
Mit folgendem Powershell Befehl wird das Modul installiert (vorzugsweise mit Admin Rechten):
Install-Module bccontainerhelper -force Get-InstalledModule bccontainerhelper
Hinweis: Ist der BcContainerHelper
, sollte vor dem dem deinstallieren mit UnInstall-Module
die Docker-Container deinstalliert werden.
Essentielle Docker Befehle
Im Umgang mit Docker und dessen Container kann es hin und wieder zu Problemen kommen. Diese Sammlung an Docker Befehlen sind für den Umgang mit Docker essentiell.
Die Befehle werden in Powershell
ausgeführt.
Es muss immer mit Administrationsrechten gestart werden.
Docker Einrichtung
Install-Module bccontainerhelper -force
Dieser Befehl sorgt dafür, dass überhaupt mit Containern gearbeitet werden kann.
Darauf folgend sollte man folgenden Befehl ausführen:
Check-NavContainerHelperPermissions -fix
Klingt danach, dass Permissions für den bccontainerhelper
konfiguriert werden, das tut es auch.
Docker Handling
Statt der ID kann auch der Name eines Containers/ eines Images verwendet werden.
Um sich manuell ein Image
für Docker zu ziehen, gibt es folgenden Befehl:
docker pull [Image-URL]
Um eine Auflistung aller Images
zu bekommen, die zur Zeit lokal hinterlegt sind:
docker images
Um eine Auflistung aller Container
zu bekommen, die zur Zeit aktiv sind:
docker ps
Um eine Auflistung aller Container
zu bekommen, die lokal verfügbar sind:
docker ps -a
Um einen Container
umzubennen:
docker rename [ContainerID] [NeuerName]
Um einen Container
neu zu starten:
docker restart [ContainerID]
Um einen Container
zu entfernen:
docker rm [ContainerID]
Um ein Image
zu entfernen:
docker rmi [ImageID]
Um einen Container
zu starten:
docker start [ContainerID]
Um einen Container
zu stopper:
docker stop [ContainerID]
Um Dateien in den Container
zu kopieren und auch zurück, ist folgender Befehl hilfreich:
Dies funktioniert nur, wenn der Container gestoppt wurde!
docker cp [ContainerID:Source_Path] [Destination_Path]
docker cp [Source_Path] [ContainerID:Destination_Path]
Beispiel:
in den Container raus: docker cp 12345678:\test\text.docx C:\test\text.docx
aus den Container rein: docker cp C:\test\text.docx 12345678:\test\text.docx
Copy-FileToNavContainer -containerName-localPath -containerPath
Der Befehl Copy-FileToNavContainer
kopiert jedoch nur einzelne Dateien, ein Verzeichnis zu kopieren, ist nicht möglich (Stand NavContainerHelper 07.2020).
Inside a Container
Wenn man hier Get-NAV
oder Set-NAV
eingibt und den Tabulator betätigt, werden alle verfügbaren Optionen durchgeblättert.
Um im Container
selber Befehle auszuführen:
Enter-BCContainer [ContainerID]
Es öffnet sich eine separate Eingabeaufforderung
aus dem Container.
Um im Container
ServerInstanz Infos auszugeben:
Get-NAVServerInstance [ServerInstanz(Optional)]
Wenn keine ServerInstanz angegeben wird, werden alle Informationen zu allen ServerInstanzen ausgegeben.
Um im Container
die ServerInstanz Konfiguration auszugeben:
Get-NAVServerConfiguration [ServerInstanz]
Dieselben Befehle kann man auch mit Set
aufrufen, wenn man Änderungen vornehmen will:
Set-NAVServerInstance [ServerInstanz]
Set-NAVServerConfiguration [ServerInstanz]
Set-NavServerConfiguration [ServerInstanz] -KeyName [Name des Parameters] -KeyValue [Wert]
Beispiel: Set-NAVServerConfiguration NAV -KeyName EnableDebugging -KeyValue true
Um das ServiceTier neu zu starten:
Restart-NAVServerInstance [ServerInstanz]
Die Sidebar
ermöglicht es, auch auf einfachem Wege Container zu erstellen, zu starten, zu stoppen und zu entfernen.
Container Fonts
Es kommt vor, dass bspw. in Reports verschiedenste Fonts
oder auch BarCodes
genutzt werden. Diese können bei der Ausgabe aus einem Container heraus nicht immer richtig dargestellt werden, da der Container nur wenige Fonts installiert bekommt.
Um die richtigen Fonts in den Container zu transferieren, muss folgender Befehl ausgeführt werden:
Add-FontsToNavContainer -containerName [ContainerName] -path "[Pfad zum Font]"
Dieser Befehl kopiert nicht nur den Font in den Container, sondern installiert diesen auch gleich mit.
Hilfreiche Links
Auflistung aller Docker Befehle mit entsprechenden Beispielen und Hilfen:
Docker BC Images
acadon Hilfe zu Docker