Docker, Singularity, et. al #1606
Replies: 7 comments 20 replies
|
Definitely worth doing and I know it's been attempted (I think it was @zacsimile, but might have been @barentine). I'm pretty sure we got it running, but that was a while ago and it might be better/easier to start from scratch. The resulting docker image was large. |
|
I've been working with Docker & Compose for the better part of a decade and am pretty sure I can get something working for this project. I'd like to make sure I capture the expectations/hopes/needs first, though. Here's some starting ones; are there others that should be on this list?
|
|
I'm assuming your target is a linux docker image (rather than win or mac)? I suspect hardware passthrough for microscope control might not be worth the effort (you're talking about supporting a number of different PCIe cards for different camera frame grabbers, as well as USB and serial, and a bunch of 3rd party hardware drivers we don't package). Because of this it probably makes the most sense to run acquisition systems "on the metal" so to speak. GPU/CUDA pass-through would be desirable however (both for analysis and for the visualisation aspects which make pretty heavy use of OpenGL). |
|
Another potential wrinkle that will need some thought is the networking code we use to support cluster analysis and to get around the GIL when running on a single computer. I've got much more experience with VMs than containers, so I'm not sure if this is the problem I think it is, but running through a firewall or NAT would be problematic. Our analysis (both single computer and cluster) fires up a client for each CPU core, and a couple of servers on each PC. Currently these use ephemeral ports (ask for port 0 and use whatever the OS gives them), and then advertise which port they are running on using mDNS/zeroconf. This means that there are not fixed ports to forward to a container / through a NAT. Although you can (with some caveats) fix the ports on the server components, routing all mDNS traffic to the container is likely to cause issues on most modern platforms. The most likely workaround here might be to use the mDNS protocol on a non-standard port (there would be advantages to doing this anyway as mDNS tends to get very noisy on large networks, to the extent that you can see a noticeable performance hit on the analysis). Last time I checked that would require changes to the |
|
I'm noticing that the test suite doesn't seem to have much coverage? If I get the suite passing in Docker, can I assume that the important functionality is covered? |
|
I think what I'm hearing is that this project has so many interlinked parts (as shown in #1113) that change is a slow, relatively high-risk proposition? |
|
@gynnantonix - It would be helpful to know a bit more about what you want out of it / your use case. It could well be that not all functionality needs to (or even should) run in a container and if we could narrow it down a bit that would be great. |
Uh oh!
There was an error while loading. Please reload this page.
Hi there, I've read through the Issues and the PRs, and I don't see anyplace where it has been suggested or attempted to use Docker to fully decouple PyME from the software environment of the machine running it. Aside from the benefits of decoupling the system Python from the one the app needs (a need that has been addressed by Conda,
uv, and other package managers) I have a use case for doing this, in which I want to make use of PyME's compute clustering capability while enabling the development of recipes and techniques on hardware that's not tied down.Other than my own, has there been any known interest in containerizing PyME?
All reactions