dynverse / dyno

Inferring, interpreting and visualising trajectories using a streamlined set of packages 🦕
https://dynverse.github.io/dyno
Other
163 stars 32 forks source link

RStudio-based Docker image #78

Open kevinwang09 opened 4 years ago

kevinwang09 commented 4 years ago

Thanks a lot for the great tools! I want to know if you can provide a Docker image with RStudio installed and all the dynverse set up?

I have tried this, but I hit a roadblock when running the trajectory constructions as that will try to pull a docker image inside a working RStudio docker image. Which is difficult to set up. Many thanks

rcannood commented 4 years ago

We ran into this issue ourselves as well, in trying to create a Docker containing all dynverse packages required to run a TI analysis. As far as I know, it is not really feasible to run a Docker inside a Docker.

One possibility would be to try to create a single Docker with as many TI methods installed as possible. It would not be possible, or at least very difficult, to install all TI methods inside this single container because some of them have directly conflicting dependency requirements. However, this would require significant changes to the current codebase.

jfx319 commented 4 years ago

...TI methods ... have directly conflicting dependency requirements

likewise, dyno itself is not immune to conflicting dependency requirements, reproducibility, versioning, etc; so ultimately in the spirit of the OP's question, it is preferable to have as an option: dyno in its own isolated environment (probably its own container)

...it is not really feasible to run a Docker inside a Docker

maybe this doesn't have to be the goal?

IMO, having TI-methods containerized, and importantly standardized to dynverse is already more than half the value! The remaining would be reaping the fruits of standardization via dyno. The marginal burden of manually connecting the two is minimal and a small price to pay, if all that were needed is a (two)-piecemeal user intervention to connect the two, while keeping both safely isolated from a deliberate installation.

What about something like this: