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
