Frequently Asked Questions

Share:

Docker

  • CodeMeter officially supports Docker since version 6.90. 

    Previously, CodeMeter bound to all network interfaces available at startup when binding to port 22350.
    Starting with version 6.90 this happens now only, if CodeMeter has been configured as a network server. Otherwise only the localhost interface is bound.
    This makes it possible to run multiple instances of CodeMeter on a single host without conflicts when binding to the port, as long as only a single instance is configured as license server.
    Whether CodeMeter should be configured as a license server can be decided during installation on Windows. Afterwards it can be changed via CodeMeter WebAdmin (Settings | Server | Server Access) or directly via Profiling (Server.ini on macOS/Linux, Registry on Windows) via the parameter 'IsNetworkServer'.
    More information about profiling can be found in the CodeMeter User Help (chapter "Profiling").

    For CmActLicenses on loaded in a container environment the following applies. 

    a) CmActLicense Firm Code licenses (Firm Code 5.xxx.xxx):
    - None-Bind as binding scheme + CmActOption 'reimport'.
    b) Universal Firm Code CmActLicenses (Firm Code 6.xxx.xxx):
    - None-Bind as binding scheme + CmActOption 'reimport' OR
    - Smart-Bind as binding scheme + CmActOption 'container'.

    Possible scenarios include:
    1. Multiple Docker containers will be used, each using its own CmActLicense license with binding scheme None + CmActOption 'reimport'.
    2. Multiple Docker containers are used as license client and one (real) license server (not as container) is used additionally.
    Here any CmActLicense or CmDongle container can be used on the license server without restrictions.
    The license server can be the host or any other system in the local network.
    3. Multiple Docker containers are used as license client and one container is used as license server.
    The above restrictions for CmActLicenses apply to the server. Alternatively a CmDongle can be mounted.

    Notes
    - In Docker the CodeMeter service does not start automatically. You must start it explicitly in a startup script.
    - When passing through CmDongles, make sure that the image has the required dependencies. On a Ubuntu 18.04 image libusb has to be installed after.
  • In general, Wibu-Systems does not recommend passing CmDongles through to Docker containers.
    Instead, it is better, if the CmDongle is operated at a CodeMeter license server which is not running in Docker and the CodeMeter instances in Docker then access the licenses as clients via LAN.
    To do this, you just need to enter the server address in the server search list.
    You can do this with the command "cmu --add-server" or by editing the server.ini file (for details see the chapter "Profiling" in the CodeMeter Manual).

    CmDongles (from Firm Ware version 2.02 and 2-XXXXXXX serial number) can be configured for two different communication modes:
    - Mass Storage Device (MSD)
    - Human Interface Device (HID)
    If you want to pass a CmDongle into a Container, it is recommended to switch to HID communication, because for using MSD the container must be additionally executed with the --privileged parameter.
    This use of --privileged is generally not recommended.
    See: https://www.trendmicro.com/en_us/research/19/l/why-running-a-privileged-container-in-docker-is-a-bad-idea.html

    To configure your CmDongle, you can use the command line tool cmu:
    cmu --hid --serial 3-1234567
    Attention: Afterwards the CmDongle needs a physical replug to finish the configuration.

    In general, there is the following to consider when passing through:
    - A CmDongle can communicate with only one CodeMeter instance at a time.
    So CodeMeter should not be installed on the host. If CodeMeter was previously installed on the host, the dongle should be replugged to reset the communication.
    - The udev rules must still be installed on the host system.
    You can find them in the CodeMeter installer package at /lib/udev/rules.d. You can simply unpack the package and add the udev rules
    to /lib/udev/rules.d manually.
    - CodeMeter should run in the container under the root user.
    If it runs in the container only under the daemon user, the dongle may not be recognized.

    CmDongle pass-through in MSD mode:
    docker run --privileged -v /dev/bus/usb/:/dev/bus/usb/ my-container

    CmDongle pass-through in HID mode:
    docker run --device=/dev/bus/usb/002/004 my-container

    Please note: The exact path (here /002/004) must be adjusted accordingly. To do this, you must use the "lsusb" command to read out which bus and device ID have been assigned for the dongle.
To top