Software container (source code)

= Software container

A <software container> runs one or more <operating-system processes> with a controlled view of files and other <operating system> resources. A <container image> supplies a packaged filesystem and execution configuration; starting it creates running <operating-system processes> with additional runtime state. A <software container> typically shares the host <operating-system kernel>, whereas a <virtual machine> can run its own <operating-system kernel>.<What is a container? in the Docker documentation>[Container isolation and comparison with virtual machines]{ref}

For example, two analyses can use different versions of the same <software dependency> without placing both versions in one shared installation. Reusing a <container image> helps reproduce those dependencies. Results also depend on the input data, configuration, mounted files and compatible host facilities. Packaging the <software> therefore records part of a reproducible calculation; the scientific assumptions and numerical methods still need their own justification.