Difference: EpicsContainer (1 vs. 18)

Revision 18
08 Sep 2020 - Main.FlorianFeldbauer
Line: 1 to 1
 
META TOPICPARENT name="WebHome"

Container Virtualization for PANDA DCS

Line: 20 to 20
  For a deeper look in the docker build process, you might have a look at the build repository https://panda-repo.gsi.de/f.feldbauer/epics-docker.

Images

Changed:
<
<

panda-ioc

>
>

epics-ioc

 
Changed:
<
<
The panda-ioc image provides a ready to use EPICS IOC with the following device support routines:
>
>
The epics-ioc image provides a ready to use EPICS IOC with the following device support routines:
 
  • asyn
  • autosave
  • calc
Line: 31 to 31
 
  • StreamDevice
  • drvAsynI2C
  • devGpio
Added:
>
>
  • iocStats
  • execute
 
Changed:
<
<
The image is available for amd64 and arm/v7
>
>
The image is available for amd64, aarch64 and arm/v7
 

Usage

Default run command (standalone):
Changed:
<
<
docker run -dit -v :/config [OPTIONS] paluma.rub.de/panda-ioc ./
>
>
docker run -dit -v :/config [OPTIONS] paluma.rub.de/epics-ioc ./
 

The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`

An example IOC startupscript looks like this %CODE%
Changed:
<
<
#!/pandaIoc
>
>
#!/epicsIoc
  epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
Changed:
<
<
dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )
>
>
dbLoadDatabase( "/dbd/epicsIoc.dbd", 0, 0 ) epics Ioc_registerRecordDeviceDriver( pdbbase )
 

## Load device drivers and records at this point drvAsynIPPortConfigure( "huber", "192.168.0.5 TCP", 0, 0, 0 )
Line: 74 to 76
 
    • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
      UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
      Alternatively use `--network host`
    • PVaccess: `--network host`

Tags

Changed:
<
<
  • 1.0.0, 1, latest
    based on epics-base:7.0.3, asyn 4.36, autosave 5.10, calc 3.7.3, modbus 3.0, devSnmp 1.0.0.1, StreamDevice 2.8.9, drvAsynI2C 1.0.2, devGpio 1.0.6
>
>
  • 1.2.0, 1, latest
    based on epics-base 7.0.4, asyn 4.40.1 with FTDI support, autosave 5.10.1, calc 3.7.4, modbus 3.1, devSnmp 1.0.0.1, StreamDevice 2.8.15, drvAsynI2C 1.0.2, devGpio 1.0.6, iocStats 3.1.16, execute 1.0.0
    This images uses "FROM scratsh", this means the image contains only the IOC (no /bin/bash or anything else)
  • 1.2.0-alpine, 1-alpine, latest-alpine
    based on epics-base 7.0.4, asyn 4.40.1 with FTDI support, autosave 5.10.1, calc 3.7.4, modbus 3.1, devSnmp 1.0.0.1, StreamDevice 2.8.15, drvAsynI2C 1.0.2, devGpio 1.0.6, iocStats 3.1.16, execute 1.0.0
    This images uses "FROM alpine", which means in addition to the IOC it provides the alpine linux system
  --

ca-gateway

Docker Image providing the Channel Access gateway.
Changed:
<
<
The image is available for amd64 and arm/v7
>
>
The image is available for amd64, aarch64 and arm/v7
 

Usage

Default run command (PC with two NICs required):
Line: 90 to 93
 

The CLIENT IP is the broadcast address of the network with the IOCs, the SERVER IP is the local IP address of the network to the supervisory layer.

Tags

Changed:
<
<
  • 2.1.1.0, 2, latest
>
>
  • 2.1.2.0, 2, latest
  --

phoebus

Line: 104 to 107
 

The phoebus image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
You need a directory on your host containing the display files and custom configuration settings which is mounted at `/home/panda-dcs/config`

Tags

Changed:
<
<
  • 4.6.0-SNAPSHOT, 4, latest
>
>
  • 4.6.3, 4, latest
  --

archive-engine

Line: 120 to 123
 

The CA address list must be configured manually in settings file (or use `--network host`).

Tags

Changed:
<
<
  • 4.6.0-SNAPSHOT, 4, latest
>
>
  • 4.6.3, 4, latest
  --

sncseq base image

This is a base image to create Docker images for sequencer programs and cannot be used directly. The Sequencer programs are collected at our PANDA Gitlab server
Changed:
<
<
The image is available for amd64 and arm/v7
>
>
The image is available for amd64, aarch64 and arm/v7
 

Examples of using the panda-ioc

Hameg HMP4040 LV Power Supply

Line: 148 to 150
  { 3, hmp_1 } } %ENDCODE%
Changed:
<
<

  1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
>
>
  1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
 
  • USB:
    1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
    2. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    Line: 177 to 177
     

    iocInit() %ENDCODE%
    Changed:
    <
    <

      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.

      1. Now start the docker container to run your IOC:
        docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd

    1. Ethernet:
    >
    >
      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
      1. Now start the docker container to run your IOC:
        docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    1. Ethernet:
     
    1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
    2. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    %CODE{"bash"}%
    Revision 17
    12 Nov 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 37 to 37
     

    Default run command (standalone):
    Changed:
    <
    <
    docker run -dit -v <PATH_ON_HOST>:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
    >
    >
    docker run -dit -v :/config [OPTIONS] paluma.rub.de/panda-ioc ./
     

    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`
    Line: 62 to 62
      To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`

    OPTIONS:

    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    Deleted:
    <
    <
    • Connect with same credentials as (current) user:
      `--user $(id -u):$(id -g)
     
    • Connect being a member of e.g. group dialout:
      `--group-add: $(getent group | grep dialout | cut -d ":" -f 3)
    • Connect to ethernet devices:
      Works without any additional settings
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio`
    Line: 85 to 84
     

    Usage

    Default run command (PC with two NICs required):
    Changed:
    <
    <
    docker run -d --network host -v <PATH_ON_HOST>:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PV_LIST> -access <ACCESS_FILE>
    >
    >
    docker run -d --network host -v :/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist -access 
     

    The ca-gateway image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the gateway configuration (access file and pvlist) which is mounted at `/config`
    Line: 99 to 98
     

    Usage

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v <PATH_ON_HOST>:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v :/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings 
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Line: 113 to 112
     

    Usage

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v <PATH_ON_HOST>:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings <SETTINGS_FILE>
    >
    >
    docker run -d -v :/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings 
     

    The archive-engine image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing custom configuration settings and engine-configuration file(s) which is mounted at `/home/panda-dcs/config`
    Line: 133 to 132
     

    Hameg HMP4040 LV Power Supply

    1. Install Docker (refer to the links at the top of this page!)
    2. Create a directory, where you will store the needed configuration files for our IOC
    Changed:
    <
    <
      mkdir ${HOME}/hameg_demo
    1. Now create a file called "hameg_demo.sub"
    >
    >
    
    

    1. Now create a file called "hameg_demo.sub"
      inside this newly created directory with the following content to get access to all for channels of this device
    %CODE{"bash"}% file "/databases/hmp4040.db"
    Line: 146 to 148
      { 3, hmp_1 } } %ENDCODE%
    Changed:
    <
    <
    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
    2. USB:
    >
    >

    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
    2. USB:
     
    1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
    Changed:
    <
    <
    1. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    >
    >
    1. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
      %CODE{"bash"}% #!/pandaIoc epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
    Line: 175 to 177
     

    iocInit() %ENDCODE%
    Changed:
    <
    <
      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
      1. Now start the docker container to run your IOC:
        docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    1. Ethernet:
    >
    >

      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.

      1. Now start the docker container to run your IOC:
        docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd

    1. Ethernet:
     
    1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
    Changed:
    <
    <
    1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    >
    >
    1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
      Create a file "hameg_demo.cmd" within the directory we created at the beginning:
      %CODE{"bash"}% #!/pandaIoc epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
    Line: 195 to 199
      dbLoadTemplate ("/config/hameg_demo.sub" )

    iocInit()
    Changed:
    <
    <
    %ENDCODE%
    >
    >
    %ENDCODE%
     
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    Deleted:
    <
    <
     


    Wiener PL5xx and Wiener MPOD LV power supplies (SNMP)

    1. Install Docker (refer to the links at the top of this page!)
    Changed:
    <
    <
    1. Create a directory, where you will store the needed configuration files for our IOC
      mkdir ${HOME}/wiener_demo
    >
    >
    1. Create a directory, where you will store the needed configuration files for our IOC
    
    
     
    1. Connect the Wiener MPOD (or PL5xx) via ethernet to your PC and look up the IP address of the device (e.g. 192.168.0.5)
    2. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
    %CODE%
    Line: 218 to 223
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 } } %ENDCODE%
    Changed:
    <
    <
    1. Now create the startup script for the IOC
    >
    >
    1. Now create the startup script for the IOC
      %CODE{"bash"}% #!/pandaIoc epicsEnvSet( "WCR", "guru WIENER-CRATE-MIB::" )
    Line: 230 to 235
     

    iocInit() %ENDCODE%
    Changed:
    <
    <
    1. Now start the docker container to run your IOC:
    >
    >
    1. Now start the docker container to run your IOC:
     
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    -- PeterZumbruch - 12 Nov 2019
    Revision 16
    12 Nov 2019 - Main.PeterZumbruch
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 62 to 62
      To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`

    OPTIONS:

    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    Added:
    >
    >
    • Connect with same credentials as (current) user:
      `--user $(id -u):$(id -g)
    • Connect being a member of e.g. group dialout:
      `--group-add: $(getent group | grep dialout | cut -d ":" -f 3)
     
    • Connect to ethernet devices:
      Works without any additional settings
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio`
    • Connect to I2C (arm only):
      `--device /dev/i2c-<NUM>`
    Line: 231 to 233
     
    1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
    Changed:
    <
    <
    -- PeterZumbruch - 17 Oct 2019
    >
    >
    -- PeterZumbruch - 12 Nov 2019
    Revision 15
    17 Oct 2019 - Main.PeterZumbruch
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 37 to 37
     

    Default run command (standalone):
    Changed:
    <
    <
    docker run -dit -v &lt;PATH_ON_HOST&gt;:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
    >
    >
    docker run -dit -v <PATH_ON_HOST>:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
     

    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`
    Line: 83 to 83
     

    Usage

    Default run command (PC with two NICs required):
    Changed:
    <
    <
    docker run -d --network host -v &lt;PATH_ON_HOST&gt;:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist &lt;PV_LIST&gt; -access &lt;ACCESS_FILE&gt;
    >
    >
    docker run -d --network host -v <PATH_ON_HOST>:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PV_LIST> -access <ACCESS_FILE>
     

    The ca-gateway image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the gateway configuration (access file and pvlist) which is mounted at `/config`
    Line: 97 to 97
     

    Usage

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v &lt;PATH_ON_HOST&gt;:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v <PATH_ON_HOST>:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Line: 111 to 111
     

    Usage

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v &lt;PATH_ON_HOST&gt;:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings &lt;SETTINGS_FILE&gt;
    >
    >
    docker run -d -v <PATH_ON_HOST>:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings <SETTINGS_FILE>
     

    The archive-engine image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing custom configuration settings and engine-configuration file(s) which is mounted at `/home/panda-dcs/config`
    Line: 230 to 230
      %ENDCODE%
    1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
    Deleted:
    <
    <
     

    -- PeterZumbruch - 17 Oct 2019
    Revision 14
    17 Oct 2019 - Main.PeterZumbruch
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 175 to 175
      %ENDCODE%
      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
    Changed:
    <
    <
      1. Now start the docker container to run your IOC:
          <
          docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
      1. Ethernet:
    >
    >
      1. Now start the docker container to run your IOC:
        docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    1. Ethernet:
     
      1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
      2. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
        Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    Changed:
    <
    <
    %CODE%
    >
    >
    %CODE{"bash"}%
      #!/pandaIoc epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
    Line: 193 to 193
      dbLoadTemplate ("/config/hameg_demo.sub" )

    iocInit()
    Changed:
    <
    <
    %ENDCODE%
    >
    >
    %ENDCODE%
     
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
    Changed:
    <
    <
        1. Now start the docker container to run your IOC:
    >
    >
        1. Now start the docker container to run your IOC:
     
    docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    Added:
    >
    >


     

    Wiener PL5xx and Wiener MPOD LV power supplies (SNMP)

    1. Install Docker (refer to the links at the top of this page!)
    2. Create a directory, where you will store the needed configuration files for our IOC
    Changed:
    <
    <
    mkdir ${HOME}/wiener_demo
    >
    >
      mkdir ${HOME}/wiener_demo
     
    1. Connect the Wiener MPOD (or PL5xx) via ethernet to your PC and look up the IP address of the device (e.g. 192.168.0.5)
    Changed:
    <
    <
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
    >
    >
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
      %CODE% file "/databases/WienerPL500.db" {
    Line: 214 to 217
      } %ENDCODE%
    1. Now create the startup script for the IOC
    Changed:
    <
    <
    %CODE%
    >
    >
    %CODE{"bash"}%
      #!/pandaIoc epicsEnvSet( "WCR", "guru WIENER-CRATE-MIB::" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
    Line: 229 to 232
     
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    Changed:
    <
    <
    -- FlorianFeldbauer - 21 Aug 2019
    >
    >
    -- PeterZumbruch - 17 Oct 2019
    Revision 13
    17 Oct 2019 - Main.PeterZumbruch
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 16 to 16
     
    docker pull paluma.rub.de/<IMAGENAME>

    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `:latest` (default)
    Added:
    >
    >

    For a deeper look in the docker build process, you might have a look at the build repository https://panda-repo.gsi.de/f.feldbauer/epics-docker.
     

    Images

    panda-ioc

    Line: 72 to 74
     
      • PVaccess: `--network host`

    Tags

    • 1.0.0, 1, latest
      based on epics-base:7.0.3, asyn 4.36, autosave 5.10, calc 3.7.3, modbus 3.0, devSnmp 1.0.0.1, StreamDevice 2.8.9, drvAsynI2C 1.0.2, devGpio 1.0.6
    Added:
    >
    >
    --
     

    ca-gateway

    Docker Image providing the Channel Access gateway.
    Line: 87 to 90
      The CLIENT IP is the broadcast address of the network with the IOCs, the SERVER IP is the local IP address of the network to the supervisory layer.

    Tags

    • 2.1.1.0, 2, latest
    Added:
    >
    >
    --
     

    phoebus

    The phoebus image provides the Phoebus GUI toolchain, to create, edit and run OPIs.
    Line: 100 to 104
      The phoebus image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the display files and custom configuration settings which is mounted at `/home/panda-dcs/config`

    Tags

    • 4.6.0-SNAPSHOT, 4, latest
    Added:
    >
    >
    --
     

    archive-engine

    The archive-engine image provides the Phoebus RDB archiver.
    Line: 115 to 120
      The CA address list must be configured manually in settings file (or use `--network host`).

    Tags

    • 4.6.0-SNAPSHOT, 4, latest
    Added:
    >
    >
    --
     

    sncseq base image

    This is a base image to create Docker images for sequencer programs and cannot be used directly. The Sequencer programs are collected at our PANDA Gitlab server
    Line: 124 to 130
     

    Examples of using the panda-ioc

    Hameg HMP4040 LV Power Supply

    1. Install Docker (refer to the links at the top of this page!)
    Changed:
    <
    <
    1. Create a directory, where you will store the needed configuration files for our IOC
    mkdir ${HOME}/hameg_demo

    1. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      %CODE%
    >
    >
    1. Create a directory, where you will store the needed configuration files for our IOC
      mkdir ${HOME}/hameg_demo
    1. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      %CODE{"bash"}%
      file "/databases/hmp4040.db" { pattern { CHAN, PORT }
    Line: 137 to 144
      { 3, hmp_1 } } %ENDCODE%
    Changed:
    <
    <
    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
      1. USB:
    >
    >
    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
    2. USB:
     
        1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
        2. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
    Changed:
    <
    <
    %CODE%
    >
    >
    %CODE{"bash"}%
      #!/pandaIoc epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
    Line: 164 to 173
     

    iocInit() %ENDCODE%
    Changed:
    <
    <
        1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd

      1. Ethernet:
    >
    >
      1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
        This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
      1. Now start the docker container to run your IOC:
          <
          docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
      1. Ethernet:
     
        1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
        2. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          %CODE%
    Line: 219 to 227
      %ENDCODE%
    1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
    Added:
    >
    >
     

    -- FlorianFeldbauer - 21 Aug 2019
    Revision 12
    30 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 35 to 35
     

    Default run command (standalone):
    Changed:
    <
    <
    docker run -dit -v :/config [OPTIONS] paluma.rub.de/panda-ioc ./
    >
    >
    docker run -dit -v &lt;PATH_ON_HOST&gt;:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
     

    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`
    Line: 80 to 80
     

    Usage

    Default run command (PC with two NICs required):
    Changed:
    <
    <
    docker run -d --network host -v :/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist -access 
    >
    >
    docker run -d --network host -v &lt;PATH_ON_HOST&gt;:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist &lt;PV_LIST&gt; -access &lt;ACCESS_FILE&gt;
     

    The ca-gateway image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the gateway configuration (access file and pvlist) which is mounted at `/config`
    Line: 93 to 93
     

    Usage

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v :/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings 
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v &lt;PATH_ON_HOST&gt;:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Line: 106 to 106
     

    Usage

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v :/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings 
    >
    >
    docker run -d -v &lt;PATH_ON_HOST&gt;:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings &lt;SETTINGS_FILE&gt;
     

    The archive-engine image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing custom configuration settings and engine-configuration file(s) which is mounted at `/home/panda-dcs/config`
    Line: 164 to 164
     

    iocInit() %ENDCODE%
    Added:
    >
    >
     
        1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    Line: 184 to 186
     

    iocInit() %ENDCODE%
    Added:
    >
    >
     
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    Revision 11
    27 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Usefull links:

    Changed:
    <
    <
    >
    >
     

    Docker Container

    The PANDA DCS Software will be distributed and maintained using Docker containers. All containers have been tested extensively under Debian 9 and 10. The gateway and IOC containers were also tested under Windows 10 (only connection to network devices!)
    Deleted:
    <
    <
    When installing Docker CE for Windows 10, chose "Linux Containers" when aksed which kind of containers you want to use on your system.
      All docker images listed below can be downloaded and used with:
    Changed:
    <
    <
    docker pull paluma.rub.de/<IMAGENAME>

    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `:latest` (default)
    >
    >
    docker pull paluma.rub.de/<IMAGENAME>
     
    Changed:
    <
    <
    All images are rebuild and reuploaded to the registry server every Saturday night.
    >
    >
    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `:latest` (default)
     

    Images

    panda-ioc

    Line: 38 to 34
     

    Usage

    Default run command (standalone):
    Deleted:
    <
    <
    docker run -dit -v <PATH_ON_YOUR_HOST>:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
     
    Changed:
    <
    <
    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`
    >
    >
    docker run -dit -v :/config [OPTIONS] paluma.rub.de/panda-ioc ./

    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`
     

    An example IOC startupscript looks like this
    Changed:
    <
    <
    #!/pandaIoc
    >
    >
    %CODE% #!/pandaIoc
      epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )

    ## Load device drivers and records at this point
    Added:
    >
    >
    drvAsynIPPortConfigure( "huber", "192.168.0.5 TCP", 0, 0, 0 )
      ## Load record instances
    Changed:
    <
    <
    dbLoadRecords( "/config/dbExample2.db", "user=Test, no=1, scan='1 second'" )
    >
    >
    dbLoadRecords( "/database/Huber_Unistate_425.db", "subsys=LMD, sector=H1, PORT=huber" )
     
    Changed:
    <
    <
    iocInit()
    >
    >
    iocInit() %ENDCODE%
     

    The preinstalled database files provided with this Docker image are located at `/databases` within the container's filesystem. A list of all available database and protocol files can be found on the PANDA Gitlab server.
    Added:
    >
    >

    To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`
     

    OPTIONS:

    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    • Connect to ethernet devices:
      Works without any additional settings
    Line: 68 to 70
     
    • Access remote PVs:
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    Deleted:
    <
    <
    To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`
     

    Tags

    • 1.0.0, 1, latest
      based on epics-base:7.0.3, asyn 4.36, autosave 5.10, calc 3.7.3, modbus 3.0, devSnmp 1.0.0.1, StreamDevice 2.8.9, drvAsynI2C 1.0.2, devGpio 1.0.6

    ca-gateway

    Line: 79 to 80
     

    Usage

    Default run command (PC with two NICs required):
    Changed:
    <
    <
    docker run -d --network host -v <PATH_ON_HOST>:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>
    >
    >
    docker run -d --network host -v :/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist -access 
     

    The ca-gateway image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the gateway configuration (access file and pvlist) which is mounted at `/config`
    Line: 92 to 93
     

    Usage

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v <PATH_ON_HOST>:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v :/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings 
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Line: 105 to 106
     

    Usage

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v <PATH_ON_HOST>:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings <SETTINGS_FILE>
    >
    >
    docker run -d -v :/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings 
     

    The archive-engine image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing custom configuration settings and engine-configuration file(s) which is mounted at `/home/panda-dcs/config`
    Line: 122 to 123
     

    Examples of using the panda-ioc

    Hameg HMP4040 LV Power Supply

    Changed:
    <
    <
    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/hameg_demo
    3. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      file "/databases/hmp4040.db"
    >
    >
    1. Install Docker (refer to the links at the top of this page!)
    2. Create a directory, where you will store the needed configuration files for our IOC
    mkdir ${HOME}/hameg_demo

    1. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      %CODE% file "/databases/hmp4040.db"
      { pattern { CHAN, PORT } { 0, hmp_1 } { 1, hmp_1 } { 2, hmp_1 } { 3, hmp_1 }
    Changed:
    <
    <
    }
    >
    >
    } %ENDCODE%
     
    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
      1. USB:
        1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
    Changed:
    <
    <
        1. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/pandaIoc
    >
    >
        1. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          %CODE% #!/pandaIoc
      epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )
    Line: 155 to 162
      ## Load record instances dbLoadTemplate ("/config/hameg_demo.sub" )
    Changed:
    <
    <
    iocInit()
    >
    >
    iocInit() %ENDCODE%
     
        1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
    Changed:
    <
    <
        1. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    >
    >
        1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
     
      1. Ethernet:
        1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
    Changed:
    <
    <
        1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/pandaIoc
    >
    >
        1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          %CODE% #!/pandaIoc
      epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )
    Line: 171 to 182
      ## Load record instances dbLoadTemplate ("/config/hameg_demo.sub" )
    Changed:
    <
    <
    iocInit()
    >
    >
    iocInit() %ENDCODE%
     
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
    Changed:
    <
    <
        1. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    >
    >
        1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
     

    Wiener PL5xx and Wiener MPOD LV power supplies (SNMP)

    Changed:
    <
    <
    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/wiener_demo
    >
    >
    1. Install Docker (refer to the links at the top of this page!)
    2. Create a directory, where you will store the needed configuration files for our IOC
    mkdir ${HOME}/wiener_demo
     
    1. Connect the Wiener MPOD (or PL5xx) via ethernet to your PC and look up the IP address of the device (e.g. 192.168.0.5)
    Changed:
    <
    <
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
      file "/databases/WienerPL500.db"
      {
      pattern { subsys, dev, sector, CRATE, CH }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u0 }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 }
      }
    2. Now create the startup script for the IOC
      #!/pandaIoc
    >
    >
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
    file "/databases/WienerPL500.db"
    {
            pattern { subsys, dev, sector, CRATE, CH }
            { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u0 }
            { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 }
    }
    

    1. Now create the startup script for the IOC
      %CODE% #!/pandaIoc
      epicsEnvSet( "WCR", "guru WIENER-CRATE-MIB::" ) dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )
    Line: 187 to 211
      ## Load record instances dbLoadTemplate ("/config/wiener_demo.sub" )
    Changed:
    <
    <
    iocInit()
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    >
    >
    iocInit() %ENDCODE%
    1. Now start the docker container to run your IOC:
    docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
     

    -- FlorianFeldbauer - 21 Aug 2019
    Revision 10
    23 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 15 to 15
      When installing Docker CE for Windows 10, chose "Linux Containers" when aksed which kind of containers you want to use on your system.

    All docker images listed below can be downloaded and used with:
    Deleted:
    <
    <
     
    docker pull paluma.rub.de/<IMAGENAME>
    Changed:
    <
    <
    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `latest` (default)
    >
    >
    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `:latest` (default)

    All images are rebuild and reuploaded to the registry server every Saturday night.
     
    Changed:
    <
    <

    Usage

    >
    >

    Images

     

    panda-ioc

    Added:
    >
    >
    The panda-ioc image provides a ready to use EPICS IOC with the following device support routines:
    • asyn
    • autosave
    • calc
    • modbus
    • devSnmp
    • StreamDevice
    • drvAsynI2C
    • devGpio

    The image is available for amd64 and arm/v7

    Usage

      Default run command (standalone):
    Added:
    >
    >
    docker run -dit -v <PATH_ON_YOUR_HOST>:/config [OPTIONS] paluma.rub.de/panda-ioc ./<YOUR_ST.CMD>
     
    Changed:
    <
    <
    docker run -dit [VOLUMES] [OPTIONS] paluma.rub.de/panda-ioc ./[ST.CMD]

    Volumes:

    >
    >
    The panda-ioc image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the IOC startup script, and substitution files which is mounted at `/config`

    An example IOC startupscript looks like this
    #!/pandaIoc
    epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
    dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
    pandaIoc_registerRecordDeviceDriver( pdbbase )
    
    ## Load device drivers and records at this point
    ## Load record instances
    dbLoadRecords( "/config/dbExample2.db", "user=Test, no=1, scan='1 second'" )
     
    Changed:
    <
    <
    The panda-ioc image offers three mountable Volumes
    • /home/panda-dcs/config: This directory should contain the substitution files and start up scripts for your IOC.
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from our git repo are copied here)
    • /home/panda-dcs/databases: This directory contains the database files for the IOC (if this directory is empty, all database files from our git repo are copied here)
    Mount volumes with: `-v <PATH_ON_HOST>:/home/panda-dcs/config`

    OPTIONS can be:

    >
    >
    iocInit()

    The preinstalled database files provided with this Docker image are located at `/databases` within the container's filesystem. A list of all available database and protocol files can be found on the PANDA Gitlab server.

    OPTIONS:

     
    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    • Connect to ethernet devices:
      Works without any additional settings
    Changed:
    <
    <
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio --group-add $(grep gpio /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's gpio group, does not work in compose files!)
    • Connect to I2C (arm only):
      `--device /dev/i2c-<NUM> --group-add $(grep i2c /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's i2c group, does not work in compose files!)
    >
    >
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio`
    • Connect to I2C (arm only):
      `--device /dev/i2c-<NUM>`
     
    • Connect to CAN bus devices:
      `--network host`
    • Access PVs from remote:
    Changed:
    <
    <
      • CA: `-p 5064-5065:5064-5065 -p 5064-5065:5064-5065/udp` (might be sufficient to publish CAS ports)
    >
    >
      • CA: `-p 5064-5065:5064-5065 -p 5064-5065:5064-5065/udp`
     
      • PVaccess: `--network host`
    • Access remote PVs:
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    Changed:
    <
    <
    To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q
    >
    >
    To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`

    Tags

    • 1.0.0, 1, latest
      based on epics-base:7.0.3, asyn 4.36, autosave 5.10, calc 3.7.3, modbus 3.0, devSnmp 1.0.0.1, StreamDevice 2.8.9, drvAsynI2C 1.0.2, devGpio 1.0.6
     

    ca-gateway

    Added:
    >
    >
    Docker Image providing the Channel Access gateway.

    The image is available for amd64 and arm/v7

    Usage

      Default run command (PC with two NICs required):
    Added:
    >
    >
    docker run -d --network host -v <PATH_ON_HOST>:/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>
     
    Changed:
    <
    <
    docker run -d --network host -v <PATH_ON_HOST>:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>
    >
    >
    The ca-gateway image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the gateway configuration (access file and pvlist) which is mounted at `/config`
     
    Changed:
    <
    <
    The directory `/home/panda-dcs/config` must contain the configuration files for the gateway, i.e. PVLIST_FILE and ACCESS_FILE.

    Phoebus

    >
    >
    The CLIENT IP is the broadcast address of the network with the IOCs, the SERVER IP is the local IP address of the network to the supervisory layer.

    Tags

    • 2.1.1.0, 2, latest

    phoebus

     
    Changed:
    <
    <
    Default run command (standalone)
    >
    >
    The phoebus image provides the Phoebus GUI toolchain, to create, edit and run OPIs.

    Usage

     
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v ${PWD}/phoebus-config:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
    >
    >
    Default run command (standalone)
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v <PATH_ON_HOST>:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Changed:
    <
    <
    The directory `/home/panda-dcs/config` contains configuration files and bob files (display-files)

    Archive-Engine

    >
    >
    The phoebus image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing the display files and custom configuration settings which is mounted at `/home/panda-dcs/config`

    Tags

    • 4.6.0-SNAPSHOT, 4, latest

    archive-engine

    The archive-engine image provides the Phoebus RDB archiver.

    Usage

     

    Default run command (standalone):
    Added:
    >
    >
    docker run -d -v <PATH_ON_HOST>:/home/panda-dcs/config -p 4812 paluma.rub.de/archive-engine -engine <ENGINE> -settings <SETTINGS_FILE>
     
    Changed:
    <
    <
    docker run -d -v ${PWD}/phoebus-config:/home/panda-dcs/config -p 4812:4812 paluma.rub.de/archive-engine -engine Test -settings <SETTINGS_FILE>
    >
    >
    The archive-engine image works with Volumes. With volumes you can mount a local directory from your host system into the Docker container (see `-v` option).
    You need a directory on your host containing custom configuration settings and engine-configuration file(s) which is mounted at `/home/panda-dcs/config`
     
    Changed:
    <
    <
    If there are any `*.xml` files present in the `/home/panda-dcs/config` directory at the first start of the container, the archive engine will import them as new engines (using `-replace_engine -steal_channels`). The basename of the xml-files is used as engine name.
    CA address list must be configured manually in settings file (or use `--network host`).
    >
    >
    When the container is started for the first time, any `*.xml` files present in `/home/panda-dcs/config` are imported as new engines into the archiver configuration (using `-replace_engine -steal_channels`). The basename of the xml-files is used as engine name.

    The CA address list must be configured manually in settings file (or use `--network host`).

    Tags

    • 4.6.0-SNAPSHOT, 4, latest

    sncseq base image

    This is a base image to create Docker images for sequencer programs and cannot be used directly. The Sequencer programs are collected at our PANDA Gitlab server

    The image is available for amd64 and arm/v7
     
    Changed:
    <
    <

    Examples

    >
    >

    Examples of using the panda-ioc

     

    Hameg HMP4040 LV Power Supply

    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/hameg_demo
    Changed:
    <
    <
    1. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      file "/epics/databases/hmp4040.db"
    >
    >
    1. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      file "/databases/hmp4040.db"
      { pattern { CHAN, PORT } { 0, hmp_1 }
    Line: 84 to 134
      }
    1. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
      1. USB:
    Changed:
    <
    <
        1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
        2. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/epics/ioc/bin/linux-x86_64/pandaIoc
          
          epicsEnvSet( "ARCH",                 "linux-x86_64" )
          epicsEnvSet( "TOP",                  "/epics/ioc" )
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/home/panda-dcs/protocols" )
          
          ## Register all support components
          dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 )
    >
    >
        1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
        2. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/pandaIoc
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
          dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
      pandaIoc_registerRecordDeviceDriver( pdbbase )
    Deleted:
    <
    <
    ## Load drivers
      ## Connect to R&S HMP4040 with HO732 via usb-serial interface drvAsynSerialPortConfigure( "hmp_1", "/dev/ttyAMA0", 0, 0, 0 ) asynSetOption( "hmp_1", 0, "baud", "9600" )
    Line: 109 to 153
      asynSetOption( "hmp_1", 0, "ixany", "N" )

    ## Load record instances
    Changed:
    <
    <
    dbLoadTemplate ("/home/panda-dcs/config/hameg_demo.sub" )
    >
    >
    dbLoadTemplate ("/config/hameg_demo.sub" )
     

    iocInit()
    Changed:
    <
    <
        1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/home/panda-dcs/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
    >
    >
        1. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
     
      1. Ethernet:
        1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
    Changed:
    <
    <
        1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/epics/ioc/bin/linux-x86_64/pandaIoc
          
          epicsEnvSet( "ARCH",                 "linux-x86_64" )
          epicsEnvSet( "TOP",                  "/epics/ioc" )
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/home/panda-dcs/protocols" )
          
          ## Register all support components
          dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 )
    >
    >
        1. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/pandaIoc
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/protocols" )
          dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
      pandaIoc_registerRecordDeviceDriver( pdbbase )
    Deleted:
    <
    <
    ## Load drivers
      ## Connect to R&S HMP4040 with HO732 via usb-serial interface drvAsynIPPortConfigure( "hmp_1", "192.168.0.5:5025 TCP", 0, 0, 0 )

    ## Load record instances
    Changed:
    <
    <
    dbLoadTemplate ("/home/panda-dcs/config/hameg_demo.sub" )
    >
    >
    dbLoadTemplate ("/config/hameg_demo.sub" )
     

    iocInit()
    Changed:
    <
    <
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    >
    >
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
     

    Wiener PL5xx and Wiener MPOD LV power supplies (SNMP)

    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/wiener_demo
    3. Connect the Wiener MPOD (or PL5xx) via ethernet to your PC and look up the IP address of the device (e.g. 192.168.0.5)
    Changed:
    <
    <
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
      file "/epics/databases/WienerPL500.db"
      {
      pattern { subsys, dev, sector, CRATE, CH }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u0 }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 }
      }
    2. Now create the startup script for the IOC
      #!/epics/ioc/bin/linux-x86_64/pandaIoc
      
      epicsEnvSet( "ARCH", "linux-x86_64" )
      epicsEnvSet( "TOP",  "/epics/ioc" )
    >
    >
    1. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
      file "/databases/WienerPL500.db"
      {
      pattern { subsys, dev, sector, CRATE, CH }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u0 }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 }
      }
    2. Now create the startup script for the IOC
      #!/pandaIoc
      epicsEnvSet( "WCR", "guru WIENER-CRATE-MIB::" )
    Changed:
    <
    <

    ## Register all support components dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 )
    >
    >
    dbLoadDatabase( "/dbd/pandaIoc.dbd", 0, 0 )
      pandaIoc_registerRecordDeviceDriver( pdbbase )

    ## Load record instances
    Changed:
    <
    <
    dbLoadTemplate ("/home/panda-dcs/config/wiener_demo.sub" )
    >
    >
    dbLoadTemplate ("/config/wiener_demo.sub" )
     

    iocInit()
    Changed:
    <
    <
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    List of Images and Tags

    epics-base

    This image is only needed if you want do create your own IOC Docker image. It is just a base image for the panda-ioc and ca-gateway images.
    • 7.0.3
      EPICS base 7.0.3, based on Debian-Buster
    • 7.0.2
      EPICS base 7.0.2, based on Debian-Stretch
    • 7.0.2-raspi
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the BeagleBone Black

    panda-ioc

    Image with ready-to-use EPICS IOC. Includes asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9
    • 7.0.2
      Based on "epics-base:7.0.2", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9, drvasyni2c 1.0.2, devgpio 1.0.6
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9, drvasyni2c 1.0.2, devgpio 1.0.6

    ca-gateway

    Image with ready to use CA-Gateway
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", CA-Gateway R2.1.1.0
    • 7.0.2
      Based on "epics-base:7.0.2", CA-Gateway R2.1.1.0

    Phoebus

    Image with the main Phoebus product
    • openjdk11, latest

    Archive-Engine

    Image with the archive-engine from Phoebus
    • openjdk11, latest
    >
    >
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

     

    -- FlorianFeldbauer - 21 Aug 2019
    Revision 9
    10 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 7 to 7
     
    Added:
    >
    >
     

    Docker Container

    The PANDA DCS Software will be distributed and maintained using Docker containers. All containers have been tested extensively under Debian 9 and 10. The gateway and IOC containers were also tested under Windows 10 (only connection to network devices!)
    Line: 22 to 24
     

    panda-ioc

    Default run command (standalone):
    Deleted:
    <
    <
    docker run -dit -v ${PWD}/ioc-config:/home/panda-dcs/config [OPTIONS] paluma.rub.de/panda-ioc ./[ST.CMD]
     
    Changed:
    <
    <
    The panda-ioc image offers three mountable volumes:
    >
    >
    docker run -dit [VOLUMES] [OPTIONS] paluma.rub.de/panda-ioc ./[ST.CMD]

    Volumes:

    The panda-ioc image offers three mountable Volumes
     
    • /home/panda-dcs/config: This directory should contain the substitution files and start up scripts for your IOC.
    Changed:
    <
    <
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from git repo are copied here)
    • /home/panda-dcs/databases: This directory contains the database files for the IOC (if this directory is empty, all database files from git repo are copied here)
    OPTIONS can be:
    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    >
    >
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from our git repo are copied here)
    • /home/panda-dcs/databases: This directory contains the database files for the IOC (if this directory is empty, all database files from our git repo are copied here)
    Mount volumes with: `-v <PATH_ON_HOST>:/home/panda-dcs/config`

    OPTIONS can be:

    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
     
    • Connect to ethernet devices:
      Works without any additional settings
    Changed:
    <
    <
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio --group-add $(grep gpio /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's gpio group, does not work in compose files!)
    • Connect to I2C (arm only):
      `--device /dev/i2c-<NUM> --group-add $(grep i2c /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's i2c group, does not work in compose files!)
    • Connect to CAN bus devices:
      `--network host`
    >
    >
    • Connect to GPIOs (arm only):
      `-v /sys/class/gpio --group-add $(grep gpio /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's gpio group, does not work in compose files!)
    • Connect to I2C (arm only):
      `--device /dev/i2c-<NUM> --group-add $(grep i2c /etc/group | awk -F':' '{ print $3 }')`
      (add panda-dcs user to host's i2c group, does not work in compose files!)
    • Connect to CAN bus devices:
      `--network host`
     
    • Access PVs from remote:
    Changed:
    <
    <
      • CA: `-p 5064-5065:5064-5065 -p 5064-5065:5064-5065/udp` (might be sufficient to publish CAS ports)
      • PVaccess: `--network host`
    >
    >
      • CA: `-p 5064-5065:5064-5065 -p 5064-5065:5064-5065/udp` (might be sufficient to publish CAS ports)
      • PVaccess: `--network host`
     
    • Access remote PVs:
    Changed:
    <
    <
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    To run commands within the IOC container use `docker attach <CONTAINER ID>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q
    >
    >
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    To run commands within the IOC container use `docker attach <CONTAINER ID/NAME>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q
     

    ca-gateway

    Default run command (PC with two NICs required):
    Deleted:
    <
    <
    docker run -d --network host -v ${PWD}/ioc-config:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>
     
    Changed:
    <
    <
    The directory `/home/panda-dcs/config` contains the configuration files for the gateway, i.e. PVLIST_FILE and ACCESS_FILE
    >
    >
    docker run -d --network host -v <PATH_ON_HOST>:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>

    The directory `/home/panda-dcs/config` must contain the configuration files for the gateway, i.e. PVLIST_FILE and ACCESS_FILE.
     

    Phoebus

    Default run command (standalone)
    Revision 8
    10 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 154 to 149
      iocInit()
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    List of Images and Tags

    Changed:
    <
    <

    epics-base

    >
    >

    epics-base

     

    This image is only needed if you want do create your own IOC Docker image. It is just a base image for the panda-ioc and ca-gateway images.
    • 7.0.3
      EPICS base 7.0.3, based on Debian-Buster
    • 7.0.2
      EPICS base 7.0.2, based on Debian-Stretch
    • 7.0.2-raspi
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the BeagleBone Black
    Changed:
    <
    <

    panda-ioc

    >
    >

    panda-ioc

     

    Image with ready-to-use EPICS IOC. Includes asyn, stream, autosave, calc, modbus and snmp device support modules
    Changed:
    <
    <
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi"
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack"

    ca-gateway

    >
    >
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9
    • 7.0.2
      Based on "epics-base:7.0.2", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9, drvasyni2c 1.0.2, devgpio 1.0.6
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack", asyn 4.36, autosave 5.10, calc 3.7.3 modbus 3.0, snmp 1.0.0.1, stream 2.8.9, drvasyni2c 1.0.2, devgpio 1.0.6

    ca-gateway

     

    Image with ready to use CA-Gateway
    Changed:
    <
    <
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"

    Phoebus

    >
    >
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", CA-Gateway R2.1.1.0
    • 7.0.2
      Based on "epics-base:7.0.2", CA-Gateway R2.1.1.0

    Phoebus

     

    Image with the main Phoebus product
    • openjdk11, latest
    Changed:
    <
    <

    Archive-Engine

    >
    >

    Archive-Engine

     

    Image with the archive-engine from Phoebus
    • openjdk11, latest
    Revision 7
    09 Sep 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Usefull links:

    Changed:
    <
    <
    >
    >
     

    Docker Container

    Changed:
    <
    <
    The PANDA DCS Software will be distributed and maintained using Docker containers. All containers have been tested extensively under Debian 9 and 10. The gateway and IOC containers were also tested under Windows 10.
    >
    >
    The PANDA DCS Software will be distributed and maintained using Docker containers. All containers have been tested extensively under Debian 9 and 10. The gateway and IOC containers were also tested under Windows 10 (only connection to network devices!)
     

    When installing Docker CE for Windows 10, chose "Linux Containers" when aksed which kind of containers you want to use on your system.

    All docker images listed below can be downloaded and used with:
    Changed:
    <
    <
    docker pull paluma.rub.de/<IMAGENAME>:<TAG>
    >
    >
    docker pull paluma.rub.de/<IMAGENAME>
     
    Changed:
    <
    <
    It is recommended to always use tag `latest`.
    >
    >
    You can also download a specific version by appending `:<TAG>` to the above command, but it is recommended to use `latest` (default)
     
    Changed:
    <
    <

    List of Images and Tags

    epics-base

    Base image for panda-ioc and ca-gateway images.
    • 7.0.3
      EPICS base 7.0.3, based on Debian-Buster
    • 7.0.2
      EPICS base 7.0.2, based on Debian-Stretch
    • 7.0.2-raspi
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the BeagleBone Black

    panda-ioc

    Image with ready-to-use EPICS IOC. Includes asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi"
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack"

    ca-gateway

    Image with ready to use CA-Gateway
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"

    Phoebus

    Image with the main Phoebus product
    • openjdk11, latest

    Archive-Engine

    Image with the archive-engine from Phoebus
    • openjdk11, latest

    Usage

    panda-ioc

    >
    >

    Usage

    panda-ioc

     

    Default run command (standalone):
    Line: 56 to 28
     

    The panda-ioc image offers three mountable volumes:
    • /home/panda-dcs/config: This directory should contain the substitution files and start up scripts for your IOC.
    Changed:
    <
    <
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from git repo are copied here)
    >
    >
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from git repo are copied here)
     
    • /home/panda-dcs/databases: This directory contains the database files for the IOC (if this directory is empty, all database files from git repo are copied here)
    OPTIONS can be:
    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    Line: 71 to 43
     
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    To run commands within the IOC container use `docker attach <CONTAINER ID>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q
    Changed:
    <
    <

    ca-gateway

    >
    >

    ca-gateway

     

    Default run command (PC with two NICs required):

    docker run -d --network host -v ${PWD}/ioc-config:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>

    The directory `/home/panda-dcs/config` contains the configuration files for the gateway, i.e. PVLIST_FILE and ACCESS_FILE
    Changed:
    <
    <

    Phoebus

    >
    >

    Phoebus

     

    Default run command (standalone)
    Line: 87 to 59
      On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.

    The directory `/home/panda-dcs/config` contains configuration files and bob files (display-files)
    Changed:
    <
    <

    Archive-Engine

    >
    >

    Archive-Engine

     

    Default run command (standalone):
    Line: 180 to 152
      dbLoadTemplate ("/home/panda-dcs/config/wiener_demo.sub" )

    iocInit()
    Changed:
    <
    <
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
    >
    >
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./wiener_demo.cmd

    List of Images and Tags

    epics-base

    This image is only needed if you want do create your own IOC Docker image. It is just a base image for the panda-ioc and ca-gateway images.
    • 7.0.3
      EPICS base 7.0.3, based on Debian-Buster
    • 7.0.2
      EPICS base 7.0.2, based on Debian-Stretch
    • 7.0.2-raspi
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the BeagleBone Black

    panda-ioc

    Image with ready-to-use EPICS IOC. Includes asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi"
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack"

    ca-gateway

    Image with ready to use CA-Gateway
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"

    Phoebus

    Image with the main Phoebus product
    • openjdk11, latest

    Archive-Engine

    Image with the archive-engine from Phoebus
    • openjdk11, latest
      -- FlorianFeldbauer - 21 Aug 2019
    Revision 6
    23 Aug 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 161 to 161
      iocInit()
        1. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        2. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
    Added:
    >
    >

    Wiener PL5xx and Wiener MPOD LV power supplies (SNMP)

    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/wiener_demo
    3. Connect the Wiener MPOD (or PL5xx) via ethernet to your PC and look up the IP address of the device (e.g. 192.168.0.5)
    4. Now create a file called "wiener_demo.sub" inside this newly created directory with the following content to get access to channels 'u0' and 'u1' of this device. The macro CRATE is either the hostname or the IP address of the MPOD crate.
      file "/epics/databases/WienerPL500.db"
      {
      pattern { subsys, dev, sector, CRATE, CH }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u0 }
      { LMD, MUPIX, P0:H1:D3:S2, 192.168.0.5, u1 }
      }
    5. Now create the startup script for the IOC
      #!/epics/ioc/bin/linux-x86_64/pandaIoc
      
      epicsEnvSet( "ARCH", "linux-x86_64" )
      epicsEnvSet( "TOP",  "/epics/ioc" )
      epicsEnvSet( "WCR",  "guru WIENER-CRATE-MIB::" )
     
    Added:
    >
    >
    ## Register all support components dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 ) pandaIoc_registerRecordDeviceDriver( pdbbase )

    ## Load record instances dbLoadTemplate ("/home/panda-dcs/config/wiener_demo.sub" )

    iocInit()
    1. Now start the docker container to run your IOC:
      docker run -dit -v ${HOME}/wiener_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./wiener_demo.cmd
      -- FlorianFeldbauer - 21 Aug 2019
    Revision 5
    23 Aug 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 94 to 94
     
    docker run -d -v ${PWD}/phoebus-config:/home/panda-dcs/config -p 4812:4812 paluma.rub.de/archive-engine -engine Test -settings <SETTINGS_FILE>

    If there are any `*.xml` files present in the `/home/panda-dcs/config` directory at the first start of the container, the archive engine will import them as new engines (using `-replace_engine -steal_channels`). The basename of the xml-files is used as engine name.
    CA address list must be configured manually in settings file (or use `--network host`).
    Added:
    >
    >

    Examples

    Hameg HMP4040 LV Power Supply

    1. First we need to install Docker CE (refer to the links at the top of this page!)
    2. Create a directory, where we will store some files needed for our IOC
      mkdir ${HOME}/hameg_demo
    3. Now create a file called "hameg_demo.sub" inside this newly created directory with the following content to get access to all for channels of this device
      file "/epics/databases/hmp4040.db"
      {
       pattern { CHAN, PORT }
         { 0, hmp_1 }
         { 1, hmp_1 }
         { 2, hmp_1 }
         { 3, hmp_1 }
      }
    4. The HMP4040 has two interfaces for remote control: USB and Ethernet. I will discuss both
      1. USB:
        1. Connect the HMP4040 to our PC via USB. Under linux, the device will show up under `/dev/ttyAMA0` or similar.
        2. Now we need a startup script for our EPICS IOC, which opens the serial interface and configures it so we can talk to the HMP4040. The default settings of the HMP4040 is 8N1 at 9600baud.
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/epics/ioc/bin/linux-x86_64/pandaIoc
          
          epicsEnvSet( "ARCH",                 "linux-x86_64" )
          epicsEnvSet( "TOP",                  "/epics/ioc" )
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/home/panda-dcs/protocols" )
          
          ## Register all support components
          dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 )
          pandaIoc_registerRecordDeviceDriver( pdbbase )
          
          ## Load drivers
          ## Connect to R&S HMP4040 with HO732 via usb-serial interface
          drvAsynSerialPortConfigure( "hmp_1", "/dev/ttyAMA0", 0, 0, 0 )
          asynSetOption( "hmp_1", 0, "baud", "9600" )
          asynSetOption( "hmp_1", 0, "bits", "8" )
          asynSetOption( "hmp_1", 0, "parity", "none" )
          asynSetOption( "hmp_1", 0, "stop", "1" )
          asynSetOption( "hmp_1", 0, "clocal", "Y" )
          asynSetOption( "hmp_1", 0, "crtscts", "N" )
          asynSetOption( "hmp_1", 0, "ixon", "N" )
          asynSetOption( "hmp_1", 0, "ixoff", "N" )
          asynSetOption( "hmp_1", 0, "ixany", "N" )
          
          ## Load record instances
          dbLoadTemplate ("/home/panda-dcs/config/hameg_demo.sub" )
          
          iocInit()
        3. Note in the file above: the first parameter of `drvAsynSerialPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a handle for the serial port at "/dev/ttyAMA0", configures this port and afterwards loads all needed records via the substitution file we created in the beginning.
        4. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/home/panda-dcs/config --device /dev/ttyAMA0 paluma.rub.de/panda-ioc ./hameg_demo.cmd
      2. Ethernet:
        1. Connect the HMP4040 to our PC via Ethernet cable. You need a DHCP server and need to get the IP address assigned to the HMP4040 (e.g. 192.168.0.5)
        2. Now we need a startup script for our EPICS IOC, which opens a TCP/IP port to the HMP4040
          Create a file "hameg_demo.cmd" within the directory we created at the beginning:
          #!/epics/ioc/bin/linux-x86_64/pandaIoc
          
          epicsEnvSet( "ARCH",                 "linux-x86_64" )
          epicsEnvSet( "TOP",                  "/epics/ioc" )
          epicsEnvSet( "STREAM_PROTOCOL_PATH", "/home/panda-dcs/protocols" )
          
          ## Register all support components
          dbLoadDatabase( "$(TOP)/dbd/pandaIoc.dbd", 0, 0 )
          pandaIoc_registerRecordDeviceDriver( pdbbase )
          
          ## Load drivers
          ## Connect to R&S HMP4040 with HO732 via usb-serial interface
          drvAsynIPPortConfigure( "hmp_1", "192.168.0.5:5025 TCP", 0, 0, 0 )
          
          ## Load record instances
          dbLoadTemplate ("/home/panda-dcs/config/hameg_demo.sub" )
          
          iocInit()
        3. Note in the file above: the first parameter of `drvAsynIPPortConfigure` is an internal name for the newly created device handle. This has to be the same name we used in our "hameg_demo.sub" as value for the PORT macro.
          This startup script now creates a TCP/IP connection to the HMP4040 and loads all needed records via the substitution file we created in the beginning.
        4. Now start the docker container to run your IOC:
          docker run -dit -v ${HOME}/hameg_demo:/home/panda-dcs/config paluma.rub.de/panda-ioc ./hameg_demo.cmd
     

    -- FlorianFeldbauer - 21 Aug 2019
    Revision 4
    22 Aug 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Usefull links:

    Added:
    >
    >
     

    Docker Container

    Line: 45 to 46
     

    Archive-Engine

    Image with the archive-engine from Phoebus
    Changed:
    <
    <
    • openjdk11, latest

    >
    >
    • openjdk11, latest
     

    Usage

    panda-ioc

    Default run command (standalone):
    Changed:
    <
    <
    docker run -dit -v ${TOP}/ioc-config:/home/panda-dcs/config [OPTIONS] paluma.rub.de/panda-ioc ./hameg_demo.cmd

    The directory `ioc-config` contains the start-up script (e.g. hameg_demo.cmd) and the needed substitution files.
    >
    >
    docker run -dit -v ${PWD}/ioc-config:/home/panda-dcs/config [OPTIONS] paluma.rub.de/panda-ioc ./[ST.CMD]
     
    Added:
    >
    >
    The panda-ioc image offers three mountable volumes:
    • /home/panda-dcs/config: This directory should contain the substitution files and start up scripts for your IOC.
    • /home/panda-dcs/protocols: This directory contains the protocol files for StreamDevice (if this directory is empty, all protocol files from git repo are copied here)
    • /home/panda-dcs/databases: This directory contains the database files for the IOC (if this directory is empty, all database files from git repo are copied here)
      OPTIONS can be:
    • Connect to serial devices:
      `--device /dev/<DEVICENAME>`
    • Connect to ethernet devices:
      Works without any additional settings
    Line: 68 to 70
     
    • Access remote PVs:
      • CA: `-e EPICS_CA_AUTO_ADDR_LIST=no -e EPICS_CA_ADDR_LIST=<LIST OF IP ADDRESSES>`
        UDP broadcasts are not forwarded by Docker's default network (bridge). Setting `EPICS_CA_ADDR_LIST` to the broadcast address (e.g. `192.168.0.255`) does not work
        Alternatively use `--network host`
      • PVaccess: `--network host`
    Changed:
    <
    <
    To run commands within the IOC container use `docker attach <CONTAINER ID>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q`
    >
    >
    To run commands within the IOC container use `docker attach <CONTAINER ID>` and you should see the EPICS IOC command prompt.
    To detach from the container again use `CTRL+p CTRL+q
     

    ca-gateway

    Changed:
    <
    <
    Default run command (standalone on PC with two NICs, not tested):
    >
    >
    Default run command (PC with two NICs required):
     
    Changed:
    <
    <
    docker run -d --network host -v ${TOP}/ioc-config:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist gw_pvlist -access gw_access
    >
    >
    docker run -d --network host -v ${PWD}/ioc-config:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist <PVLIST_FILE> -access <ACCESS_FILE>
     
    Changed:
    <
    <
    The directory `ioc-config` contains the configuration files for the gateway (e.g. gw_pvlist, gw_access)
    >
    >
    The directory `/home/panda-dcs/config` contains the configuration files for the gateway, i.e. PVLIST_FILE and ACCESS_FILE
     

    Phoebus

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v ${TOP}/phoebus-config:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings phoebus-settings.ini
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v ${PWD}/phoebus-config:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings <SETTINGS_FILE>
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Changed:
    <
    <
    The directory `phoebus-config` contains configuration files and bob files (display-files)
    >
    >
    The directory `/home/panda-dcs/config` contains configuration files and bob files (display-files)
     

    Archive-Engine

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v ${TOP}/phoebus-config:/home/panda-dcs/config -p 4812:4812 paluma.rub.de/archive-engine -engine Test -settings archiver-settings.ini
    >
    >
    docker run -d -v ${PWD}/phoebus-config:/home/panda-dcs/config -p 4812:4812 paluma.rub.de/archive-engine -engine Test -settings <SETTINGS_FILE>
     

    If there are any `*.xml` files present in the `/home/panda-dcs/config` directory at the first start of the container, the archive engine will import them as new engines (using `-replace_engine -steal_channels`). The basename of the xml-files is used as engine name.
    CA address list must be configured manually in settings file (or use `--network host`).
    Revision 3
    22 Aug 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 19 to 20
     

    List of Images and Tags

    epics-base

    Changed:
    <
    <
    • 7.0.3
      Container with EPICS base 7.0.3 installed, based on Debian-Buster
    • 7.0.2
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch
    • 7.0.2-raspi
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the BeagleBone Black
    >
    >

    Base image for panda-ioc and ca-gateway images.
    • 7.0.3
      EPICS base 7.0.3, based on Debian-Buster
    • 7.0.2
      EPICS base 7.0.2, based on Debian-Stretch
    • 7.0.2-raspi
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      EPICS base 7.0.2, based on Debian-Stretch, cross-build for usage on the BeagleBone Black
     

    panda-ioc

    Changed:
    <
    <
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.2
      Based on "epics-base:7.0.2", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules, cross-build for usage on the BeagleBone Black
    >
    >

    Image with ready-to-use EPICS IOC. Includes asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Based on "epics-base:7.0.2-raspi"
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Based on "epics-base:7.0.2-beagleboneblack"
     

    ca-gateway

    Changed:
    <
    <
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", provides channel access gateway
    • 7.0.2
      Based on "epics-base:7.0.2", provides channel access gateway
    >
    >

    Image with ready to use CA-Gateway
    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3"
    • 7.0.2
      Based on "epics-base:7.0.2"
     

    Phoebus

    Changed:
    <
    <
    • openjdk11, latest
      Phoebus package
    >
    >

    Image with the main Phoebus product
    • openjdk11, latest
     

    Archive-Engine

    Changed:
    <
    <
    • openjdk11, latest
      Phoebus Archive-Engine
    >
    >

    Image with the archive-engine from Phoebus
    • openjdk11, latest

     

    Usage

    panda-ioc

    Revision 2
    21 Aug 2019 - Main.FlorianFeldbauer
    Line: 1 to 1
     
    META TOPICPARENT name="WebHome"

    Container Virtualization for PANDA DCS

    Line: 19 to 19
     

    List of Images and Tags

    epics-base

    Changed:
    <
    <
    • 7.0.3, 7, latest
      Container with EPICS base 7.0.3 installed, based on Debian-Buster
    >
    >
    • 7.0.3
      Container with EPICS base 7.0.3 installed, based on Debian-Buster
     
    • 7.0.2
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch
    Changed:
    <
    <
    • 7.0.2-raspi, 7-raspi, raspi-latest
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack, 7-bbb, bbb-latest
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the BeagleBone Black
    >
    >
    • 7.0.2-raspi
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the Raspberry pi
    • 7.0.2-beagleboneblack
      Container with EPICS base 7.0.2 installed, based on Debian-Stretch, cross-build for usage on the BeagleBone Black
     

    panda-ioc

    • 7.0.3, 7, latest
      Based on "epics-base:7.0.3", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules
    • 7.0.2
      Based on "epics-base:7.0.2", provides an IOC with asyn, stream, autosave, calc, modbus and snmp device support modules
    Line: 39 to 39
     

    panda-ioc

    Default run command (standalone):
    Changed:
    <
    <
    docker run -dit -v ${TOP}/ioc-config:/home/panda-dcs/config [OPTIONS] panda-ioc:7.0.2 ./hameg_demo.cmd
    >
    >
    docker run -dit -v ${TOP}/ioc-config:/home/panda-dcs/config [OPTIONS] paluma.rub.de/panda-ioc ./hameg_demo.cmd
     

    The directory `ioc-config` contains the start-up script (e.g. hameg_demo.cmd) and the needed substitution files.
    Line: 59 to 59
     

    ca-gateway

    Default run command (standalone on PC with two NICs, not tested):
    Changed:
    <
    <
    docker run -d --network host -v ${TOP}/ioc-config:/home/panda-dcs/config ca-gateway:7.0.2 -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist gw_pvlist -access gw_access
    >
    >
    docker run -d --network host -v ${TOP}/ioc-config:/home/panda-dcs/config paluma.rub.de/ca-gateway -cip <CLIENT IP> -sip <SERVER IP> -server -pvlist gw_pvlist -access gw_access
     

    The directory `ioc-config` contains the configuration files for the gateway (e.g. gw_pvlist, gw_access)

    Phoebus

    Default run command (standalone)
    Changed:
    <
    <
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v ${TOP}/phoebus-config:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix phoebus:openjdk11 -settings phoebus-settings.ini
    >
    >
    docker run --network host -e DISPLAY=$DISPLAY --device /dev/dri -v ${TOP}/phoebus-config:/home/panda-dcs/config -v /tmp/.X11-unix:/tmp/.X11-unix paluma.rub.de/phoebus -settings phoebus-settings.ini
     

    On the host system a user with `UID=1000` has to exists with read/write access to the X server of the host system.
    Line: 73 to 73
     

    Archive-Engine

    Default run command (standalone):
    Changed:
    <
    <
    docker run -d -v ${TOP}/phoebus-config:/home/panda-dcs/config -p 4812:4812 archive-engine:openjdk11 -engine Test -settings archiver-settings.ini
    >
    >
    docker run -d -v ${TOP}/phoebus-config:/home/panda-dcs/config -p 4812:4812 paluma.rub.de/archive-engine -engine Test -settings archiver-settings.ini
     

    If there are any `*.xml` files present in the `/home/panda-dcs/config` directory at the first start of the container, the archive engine will import them as new engines (using `-replace_engine -steal_channels`). The basename of the xml-files is used as engine name.
    CA address list must be configured manually in settings file (or use `--network host`).
     
    This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
    Ideas, requests, problems regarding PANDA Wiki? Send feedback
    Imprint (in German)
    Privacy Policy (in German)