  In recent decades the analysis of data has become increasingly computational.
Correspondingly, this has changed how scientific and statistical work is
shared. For example, it is now commonplace for underlying analysis code and
data to be proffered alongside journal publications and conference talks.
Unfortunately, sharing code faces several challenges. First, it is often
difficult to take code from one computer and run it on another. Code
configuration, version, and dependency issues often make this challenging.
Secondly, even if the code runs, it is often hard to understand or interact
with the analysis. This makes it difficult to assess the code and its findings,
for example, in a peer review process. In this review we describe the
combination of two computing technologies that help make analyses shareable,
interactive, and completely reproducible. These technologies are (1) analysis
containerization, which leverages virtualization to fully encapsulate analysis,
data, code and dependencies into an interactive and shareable format, and (2)
code notebooks, a literate programming format for interacting with analyses.
The fusion of these two technologies offers significant advantages over using
either individually. This review surveys how the combination enhances the
accessibility and reproducibility of code, analyses, and ideas.
