Docker volume

0

Cześć, mam krótkie pytanie,
czy stworzenie kontenera który jedynie skompiluje i zlinkuje projekt, a następnie wrzuci wynik tych operacji czyli jakąś binarke itd. do volumenu tak by inny kontener mógł wykorzystać go jest słabym rozwiązaniem? Chodzi mi także o to czy przechowywanie binarek, libek, jarów itd. w volumenie to dobry pomysł?

3

Jest to jakiś pomysł, ale równie dobrze możesz użyć wielostopniowych buildów i skończyć z jednym małym kontenerem.

Ogólne podejście jest tak, że kontener powinien być "samowystarczalny" a ewentualne wolumeny są montowane tylko wtedy, kiedy chcemy wstrzyknąć jakieś pliki konfiguracyjne, i/lub kiedy kontener jest stateful i chcemy zachować ten stan pomiędzy uruchomieniami (np. DB, czego ogólnie i tak powinno się unikać).

0

@gavlosq: Nie wiem czy dobrze cię zrozumiałem. W jednym kontenerze budujesz sobie binarke, a potem ją kopiujesz do "czystego" i z niego ja odpalasz.

Edit.
Volumen to jakiś zbindowany folder więc chyba nie powinno być problemu.

0
hauleth napisał(a):

Jest to jakiś pomysł, ale równie dobrze możesz użyć wielostopniowych buildów i skończyć z jednym małym kontenerem.

Ogólne podejście jest tak, że kontener powinien być "samowystarczalny" a ewentualne wolumeny są montowane tylko wtedy, kiedy chcemy wstrzyknąć jakieś pliki konfiguracyjne, i/lub kiedy kontener jest stateful i chcemy zachować ten stan pomiędzy uruchomieniami (np. DB, czego ogólnie i tak powinno się unikać).

Postaram się po prostu opisać całe założenia, będzie to łatwiej wytłumaczyć, bo nie uważam się za guru dockerowego i brakuje mi trochę wiedzy z niego jeszcze.
Ogólnym założeniem jest stworzenie aplikacji do zlecania zadań obliczeniowych/symulacyjnych, która na wejściu otrzymuje Dockerfile + projekt w zipie. Tym projektem jest jakiś task obliczeniowy (który w dockerfile'u ma zdefinowany etap budowy, zaciągnięcia libek itd. bez odpalania samego programu) który ma być odpalany jako kontener (nazwijmy go A), udostępnia on w jakiś sposób potrzebne pliki (pliki będą argumentami symulacji) potrzebne do odpalenia symulacji w programie na kolejnym kontenerze (nazwijmy go B) na serwerze w jakiś określony sposób ( ja wpadłem na pomysł z docker volume, nie wiem czy można to rozwiązać w sposób bardziej elegancki, ale chętnie się dowiem i liczę na wszystkie propozycje; kontener A nie musi startować w taki sposób, jeśli tylko dam radę udostępnić te pliki do kontenera B w inny sposób). Nie jest powiedziane jakim rodzajem kontener B będzie, najlepiej żeby to był Docker, ale nie mam 100% pewności, bo dowiedziałem się także, że może to być Singularity ( chociażby ze względu na program do obliczeń MES Abaqusa, nie mam doświadczenia żadnego z tym oprogramowaniem, w sensie Singularity, jestem na etapie powolnego zdobywania wiedzy), więc jeśli mógłbyś mi pomóc to ogarnąć, to fajnie by było założyć te 2 scenariusze. Pozwoliłem sobie stworzyć prosty diagram pokazujący mój sposób myślenia. https://tinypic.pl/6q2tf4n2pa8l

Dregorio napisał(a):

@gavlosq: Nie wiem czy dobrze cię zrozumiałem. W jednym kontenerze budujesz sobie binarke, a potem ją kopiujesz do "czystego" i z niego ja odpalasz.

Edit.
Volumen to jakiś zbindowany folder więc chyba nie powinno być problemu.

Opisałem sytuację wyżej dla kolegi, jest tam też odpowiedź na Twoje pytanie :D

0

Dobra praktyka nakazuje zrobienia jednego Dockerfile do jednego taska. Nie bardzo rozumiem to co napisałeś:

Ogólnym założeniem jest stworzenie aplikacji do zlecania zadań obliczeniowych/symulacyjnych, która na wejściu otrzymuje Dockerfile + projekt w zipie.

Po co aplikacji przekazywać Dockerfile + projekt w zip? I jak ta aplikacja ma budować Dockerfile?

  • !? - Nie mam pojęcia o co chodzi z tym pierwszym kontenerem.
  • Uruchom kontener z gotowym taskiem.
  • Uruchom kontener z programem do obliczeń.
  • Zdefiniuj dla nich wspólny volume. Jeden. Po co dwa osobne? Możesz przecież zrobić 2 osobne katalogi na dane wejściowe i wyjściowe.

Polecam wykorzystanie multistage build.
Więcej o docker volumes

0

Hej @gavlosq

Link z diagrem niestety wygasł, a z Twojego opisu niestety nie do końca rozumiem problem. Jeśli temat nadal aktualny, wrzuć jeszcze raz diagram, może coś zaradzimy ; )

0 użytkowników online, w tym zalogowanych: 0, gości: 0