Häufig gestellte Fragen
Teilen:
Docker
- CodeMeter unterstützt Docker offiziell seit Version 6.90.
Zuvor hat sich CodeMeter beim Binden an den Port 22350 an alle bei Start verfügbaren Netzwerk-Interfaces gebunden.
Ab Version 6.90 findet dies nun nur noch statt, wenn CodeMeter auch wirklich als Netzwerk-Server konfiguriert wurde. Ansonsten wird nur an das localhost-Interface gebunden.
Dadurch ist es jetzt möglich, dass durch Docker mehrere Instanzen von CodeMeter auf einem Host laufen können, ohne dass Konflikte beim Binden an den Port auftauchen, solange maximal eine Instanz als Lizenzserver konfiguriert ist.
Ob CodeMeter als Lizenzserver konfiguriert wird kann unter Windows bei der Installation entschieden werden. Nachträglich kann es dann über den WebAdmin (Einstellungen | Server | Server-Zugriff) oder direkt über das Profiling (Server.ini auf macOS/Linux, Registry auf Windows) über den Parameter 'IsNetworkServer' geändert werden.
Mehr Informationen zum Profiling finden Sie in der CodeMeter Benutzrhilfe (Kapitel "Profiling").
Für CmActLicense-Lizenzen gibt es Bedingungen dafür, wann diese in einer Container-Umgebung geladen werden können.
a) bei CmActLicense Firm Code-Lizenzen (Firm Code 5.xxx.xxx):
- None-Bind als Bindungsschema + CmActOption 'reimport'
b) bei Universal Firm Code CmActLicense-Lizenzen (Firm Code 6.xxx.xxx):
- None-Bind als Bindungsschema + CmActOption 'reimport' ODER
- Smart-Bind als Bindungsschema + CmActOption 'container'
Denkbare Einsatzszenarien sind beispielsweise:
1. Es werden mehrere Docker-Container verwenden, bei dem jeder seine eigene CmActLicense-Lizenz mit Bindungsschema
None + CmActOption 'reimport' verwendet.
2. Es werden mehrere Docker-Container als Lizenz-Client verwendet und es wird zusätzlich ein (echter) Lizenzserver (nicht als Container)
verwendet.
Hier können am Lizenzserver dann beliebige CmActLicense- oder CmDongle-Container ohne Einschränkungen verwendet werden.
Der Lizenzserver kann der Host oder ein beliebiges anderes System im lokalen Netzwerk sein.
3. Es werden mehrere Docker-Container als Lizenz-Client und zusätzlich ein Container als Lizenzserver verwendet.
Hierbei gelten für den Server dann die oben genannte Einschränkungen für CmActLicense-Lizenzen.
Alternativ kann auch ein CmDongle gemounted werden.
Hinweise:
- In Docker startet der CodeMeter-Dienst im nicht automatisch. Sie müssen in einem Startskript diesen explizit starten.
- Beim Durchreichen von CmDongles muss sichergestellt werden, dass das Image die benötigten Abhängigkeiten besitzt.
Auf einem Ubuntu 18.04 Image muss z.B. noch libusb nachinstalliert werden. - Generell empfiehlt Wibu-Systems, CmDongles nicht in Docker Container durchzureichen.
Stattdessen ist es besser, wenn der CmDongle an einem CodeMeter Netzwerk Server betrieben wird der nicht in Docker läuft und die CodeMeter-Instanzen in Docker dann als Clients über LAN auf die Lizenzen zugreifen.
Dafür müssen Sie lediglich die Server-Adresse in die Server-Suchliste eintragen.
Dies können Sie über den Befehl "cmu --add-server" oder das Editieren der Server.ini-Datei bewerkstelligen (für Details siehe im CodeMeter-Handbuch das Kapitel "Profiling").
Mehr Information zu den üblichen Szenarien für CodeMeter in Docker können in dem Dokument "CodeMeter Developer – CodeMeter in Docker" gefunden werden. Dieses kann von der Wibu-Systems Website heruntergeladen werden:
https://www.wibu.com/de/support/anleitungen-und-handbuecher.html
Hinweis: Für den Download ist ein Entwicklerlogin notwendig.
CmDongles (ab Firmware Version 2.02 und 2-XXXXXXX Seriennummer) können für zwei verschiedene Kommunikationsmodi konfiguriert sein.
- Mass Storage Device (MSD)
- Human Interface Device (HID)
Wenn Sie einen CmDongle in einen Container durchreichen wollen, empfiehlt es sich, auf HID Kommunikation umzustellen, da für die Verwendung von MSD der Container zusätzlich mit dem --privileged-Parameter ausgeführt werden muss.
Dies Verwendung von --privileged ist generell nicht zu empfehlen.
Siehe: https://www.trendmicro.com/en_us/research/19/l/why-running-a-privileged-container-in-docker-is-a-bad-idea.html
Zum Konfigurieren ihres CmDongles, können Sie das Kommandozeilentool cmu verwenden:
cmu --hid --serial 3-1234567
Achtung: Anschließend benötigt der CmDongle eine physikalischen Replug, um die Konfiguration abzuschließen.
Beim Durchreichen gibt es allgemein das Folgende zu beachten:
- Ein CmDongle kann gleichzeitig nur mit einer CodeMeter-Instanz kommunizieren.
Es sollte also CodeMeter nicht auf dem Host installiert werden. Wenn CodeMeter zuvor auf dem Host installiert war, sollte der Dongle replugged
werden, um die Kommunikation zurückzusetzen.
- Die udev rules müssen auf dem Host System trotzdem eingespielt sein.
Diese finden Sie im CodeMeter Installer Package unter /lib/udev/rules.d. Sie können das Package dazu einfach entpacken und die udev rules
manuell nach /lib/udev/rules.d kopieren.
- CodeMeter sollte im Container unter dem root User ausgeführt werden.
Wenn es im Container nur unter dem daemon User läuft, kann es sein, dass der Dongle nicht erkannt wird.
CmDongle-Durchreichen im MSD-Modus:
docker run --privileged -v /dev/bus/usb/:/dev/bus/usb/ my-container
CmDongle-Durchreichen im HID-Modus:
docker run --device=/dev/bus/usb/002/004 my-container
Bitte beachten: Der genaue Pfad (hier /002/004) muss entsprechend angepasst werden. Dazu müssen Sie mit dem Befehl "lsusb" auslesen, welche Bus und Device ID für den Dongle vergeben wurden.