## .
## ## ## ==
## ## ## ## ## ===
/""""""""""""""""""\___/ ===-
~~~ {~~ ~~~~ ~~~ ~~~ ~~ ~~ ~ / ===- ~~~
\ o __/
\____/ __/
\______________/
| |
__ | __ __ | _ __ _
/ \| / \ / |/ / _\ |
\__/| \__/ \__ |\_ \__ |
for scientific computing
In addition to your regular packaging,
build containers for your simulation code
This will help 'driveby downloads':
start quickly, just to play around
`""==,,__
`"==..__"=..__ _ _..-==""_
----- .-,`"=/ /\ \""/_)==""``
/ I'm \ ( ( | | | \/ |
\lazy / \ '. | \; \ /
\ | \ | | ||
\ ,-._.' |_| | ||
.\_/\ -' ; Y
| ` | / |-.
'. __/_ _.-' /'
jgs `'-.._____.-'
apt-get install cmake make libboost-all-dev
libxml2-dev libxml++2.6-dev libsqlite3-dev
pip install -r requirements.txt # in a venv
cmake ../src && make # hope it's all good
curl Miniconda.sh | bash conda install packages
___________________
< that's not so bad >
-------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
.--. .--. .--.
|o_o | |o_o | |o_o |
|:_/ | |:_/ | |:_/ |
// \ \ // \ \ // \ \
(| | ) (| | ) (| | )
/'\_ _/`\ /'\_ _/`\ /'\_ _/`\
\___)=(___/ \___)=(___/ \___)=(___/
.--. .--. .--.
|o_o | |o_o | |o_o |
|:_/ | |:_/ | |:_/ |
// \ \ // \ \ // \ \
(| | ) (| | ) (| | )
/'\_ _/`\ /'\_ _/`\ /'\_ _/`\
\___)=(___/ \___)=(___/ \___)=(___/
There's no guarantee that your users' or
clusters' machines will have a working
combination of dependencies.
(unless they're running NixOS)
Enter Docker
_________
< whales! >
---------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Nope, containers.
Wikipedia:
LXC (Linux Containers) is an operating-system-level virtualization environment for running multiple isolated Linux systems (containers) on a single Linux control host.
_____
< wat >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Run multiple copies of 'Linux' at once.
Each app/container has its own:
- file system
- libraries, binaries, etc
- PIDs
- network
___________
< like VMs! >
-----------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
sort of...
--------- --------- ---------
| App | | App | | App |
|-------| |-------| |-------|
| bins/ | | bins/ | | bins/ |
| libs | | libs | | libs |
|-------| |-------| |-------|
| Guest | | Guest | | Guest |
| OS | | OS | | OS |
|-------------------------------|
| Hypervisor |
|-------------------------------|
| Host OS |
|-------------------------------|
| Server |
---------------------------------
--------- --------- ---------
| App | | App | | App |
|-------| |-------| |-------|
| bins/ | | bins/ | | bins/ |
| libs | | libs | | libs |
|-------------------------------|
| Docker |
|-------------------------------|
| Host OS |
|-------------------------------|
| Server |
---------------------------------
--------- --------- ---------
| A | A | | A | A | | A | A |
| p | p | | p | p | | p | p |
| p | p | | p | p | | p | p |
|-------| |-------| |-------|
| bins/ | | bins/ | | bins/ |
| libs | | libs | | libs |
|-------------------------------|
| Docker |
|-------------------------------|
| Host OS |
|-------------------------------|
| Server |
---------------------------------
(Docker manages the containers, but otherwise isn't involved)
--------- --------- ---------
| A | A | | A | A | | A | A |
| p | p | | p | p | | p | p |
| p | p | | p | p | | p | p |
|-------| |-------| |-------|
| bins/ | | bins/ | | bins/ |
| libs | | libs | | libs |
|-------------------------------|
| Host OS |
|-------------------------------|
| Server |
---------------------------------
_______________________________
< so what do you propose again? >
-------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
In addition to your regular packaging,
build containers for your simulation code
Running the code becomes a simple:
docker run my-super-simulation
_______________
< what do I do? >
---------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Simply...
vim Dockerfile
docker build -t .... TIME'S UP
docker.com
Email me: 🐋 @♥☢.ws
([email protected] also works)
Docker and Containers Madison Meetup
Your precious code is a burden
on its maintainers and
the publick.
Eat it.
Rewrite in Go or Rust.