Назад | Перейти на главную страницу

Точно ли повторяются вычисления, выполняемые в контейнере Docker?

Я прочитал вопрос под названием "Чем Docker.io отличается от обычной виртуальной машины?", но я до сих пор не уверен, насколько" виртуальные "докер-контейнеры. Например, в научных условиях очень важна повторяемость. Если изображение дает определенный результат на одной машине, будут ли вычисления точно такими же на другой если использовать то же изображение?

(Я действительно не знаю, на каком уровне разные операционные системы, ядра, оборудование или архитектуры могут изменять вычисления на практике, или на каком уровне Docker абстрагирует вещи, если вообще.)

Спасибо! :)

Docker - это просто уровень управления вокруг контейнера LXC, по сути, тюрьма в стиле Linux.

Контейнер LXC использует тот же процессор и ядро, что и хост, но использует собственные библиотеки (то есть библиотеки внутри файловой системы контейнера).

Итак, для повторяемости вам нужно убедиться, что все эти атрибуты одинаковы. Если у вас уже есть ответ по поводу контейнеров LXC, он на 100% применим к контейнерам Docker.

Это действительно зависит от того, о каких вычислениях вы думаете:

  • Операция типа «умножить дату на 23» никогда не бывает идемпотентной, потому что время меняется.
  • Если результат вашей операции зависит от конкретных настроек ядра, Docker не может гарантировать, что он будет одинаковым в разных системах.
  • Если ваша работа зависит от внешних физических факторов, таких как задержка в сети, даже виртуальная машина не поможет.

Тем не менее, одна из основных целей Docker - облегчить повторяемые операции. Так что в большинстве случаев особенно в научной среде, где я сомневаюсь, что результат операции / вычисления когда-либо зависит от настроек ядра, Docker кажется подходящим вариантом. И вы не первый, кто использует его в такой среде: http://bcbio.wordpress.com/2014/03/06/improving-reproducibility-and-installation-of-genomic-analysis-pipelines-with-docker/