1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: How can I get a PV from an external server from inside a docker container? |
From: | Florian Feldbauer via Tech-talk <tech-talk at aps.anl.gov> |
To: | tech-talk at aps.anl.gov |
Date: | Tue, 26 Mar 2024 19:08:48 +0100 |
Hey,
just for completeness, if you know the IP addresses of all your
IOCs you can also use the default docker network and set the
Environment variables
EPICS_CA_AUTO_ADDR_LIST no
EPICS_CA_ADDR_LIST <list of all CA server IP addresses>
In this case, the udp broadcast part of CA seems to be omitted and CA checks the list of IPs directly.
At least this worked in my very first tests with containerization
of our clients (Archiver, Alarm system, .....)
But of course this approach is rather error prone and you need to
change your config every time an IP address changes/is being
added.
On the other hand, this is the only way I know of if running docker in rootless mode.
Cheers,
Florian
Hello Dale, hello Florian,
many thanks for your helpful advises. Now I could solve the issue simply by adding "network_mode: host" to the service "epicsbase".
Now my working docker-compose.yml looks like:
services:
epicsbase:
image: softioc
container_name: epicsbase
volumes:
- ./epicsbase/db:/usr/local/db
working_dir: /usr/local/epics
command:
- /bin/sh
- -c
- |
echo start first Soft IOC
screen -d -m /usr/local/epics/epics-base/bin/linux-x86_64/softIoc -D /usr/local/epics/epics-base/dbd/softIoc.dbd -d /usr/local/db/test.db
tail -f /dev/null # keep alivenetwork_mode: host
Best regards
Carsten
--------------------Ursprüngliche Nachricht--------------------
Von: Carsten Winkler <carsten.winkler at helmholtz-berlin.de>
Gesendet: Montag 25. März 2024 14:55
An: tech-talk at aps.anl.gov
Betreff: How can I get a PV from an external server from inside a docker container?
Hello,
I have 3 SoftIOCs.
1.) local host = 193.100.100.100 with PV: "local_pv"
2.) external host = 192.200.200.200 with PV: "external_pv"
3.) docker container on local host with PV: "docker_pv"From local host I can read all PVs (caget local_pv external_pv docker_pv). 👍
From inside the docker container I can read the local_pv and the docker_pv
but not the external_pv. 🤔
Here is my docker compose configuration:
services:
epicsbase:
image: softioc
container_name: epicsbase
volumes:
- ./epicsbase/db:/usr/local/db
working_dir: /usr/local/epics
command:
- /bin/sh
- -c
- |
echo start first Soft IOC
screen -d -m /usr/local/epics/epics-base/bin/linux-x86_64/softIoc -D /usr/local/epics/epics-base/dbd/softIoc.dbd -d /usr/local/db/test.db
tail -f /dev/null # keep alive
networks:
- ioc-net
networks:
ioc-net:From inside the docker container I have also already tried EPICS_CA_AUTO_ADDR_LIST / EPICS_CA_ADDR_LIST. Unfortunately without success.
With and without these environment variables I only get the local_pv and the docker_pv.
How can I also read the external_pv from inside the docker container?
Best regards
Carsten
-- Ruhr-Universität Bochum AG der Experimentalphysik I Dr. Florian Feldbauer NB 2/131 / Fach 125 Universitätsstr. 150 D-44801 Bochum Office: NB 2/134 Phone: (+49)234 / 32-23563 Fax: (+49)234 / 32-14170 https://paluma.ruhr-uni-bochum.de