Authors Masahiro Kasahara, Xu Yang,
License CC-BY-4.0
Yang and Kasahara BMC Bioinformatics (2022) 23:112
https://doi.org/10.1186/s12859-022-04649-3 BMC Bioinformatics
SOFTWARE Open Access
LPMX: a pure rootless composable container
system
Xu Yang and Masahiro Kasahara*
*Correspondence:
mkasa@k.u-tokyo.ac.jp Abstract
Department Background: Delivering tools for genome analysis to users is often difficult given the
of Computational Biology
and Medical Sciences, The complex dependencies and conflicts of such tools. Container virtualization systems
University of Tokyo, Tokyo, (such as Singularity) isolate environments, thereby helping developers package tools.
Japan However, these systems lack mutual composability, i.e., an easy way to integrate multi-
ple tools in different containers and/or on the host. Another issue is that one may be
unable to use a single container system of the same version at all the sites being used,
thus discouraging the use of container systems.
Results: We developed LPMX, an open-source pure rootless composable container
system that provides composability; i.e., the system allows users to easily integrate
tools from different containers or even from the host. LPMX accelerates science by let-
ting researchers compose existing containers and containerize tools/pipelines that are
difficult to package/containerize using Conda or Singularity, thereby saving researchers’
precious time. The technique used in LPMX allows LPMX to run purely in userspace
without root privileges even during installation, thus ensuring that we can use LPMX
at any Linux clusters with major distributions. The lowest overhead for launching
containers with LPMX gives us courage to isolate tools as much as possible into small
containers, thereby minimizing the chance of conflicts. The support for the layered file
system keeps the total size of container images for a single genomic pipeline modest,
as opposed to Singularity, which uses mostly a flat single-layer image.
Conclusions: LPMX is pure rootless container engine with mutual composability, thus
saving researchers’ time, and accelerating science.
Keywords: Virtualization, Container system, Pipelines
Background
Genome analysis usually involves shepherding data files by using many tools and scripts,
called pipelines or workflows [1–4]. As genome analysis becomes more complex, more
third-party packages and tools are needed, and conflicting packages, including differ-
ent versions of the same package, are more likely to exist. This situation is known as
dependency hell. Tools used in genome analysis require variety of environments, such as
dependent libraries or compiler versions. Setting up environments often takes research-
ers a long time and thus discourages researchers from using hard-to-install programs
© The Author(s) 2022. Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits
use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original
author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third
party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the mate-
rial. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or
exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://
creativecommons.org/licenses/by/4.0/. The Creative Commons Public Domain Dedication waiver (http://creativecommons.org/publi
cdomain/zero/1.0/) applies to the data made available in this article, unless otherwise stated in a credit line to the data.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 2 of 13
regardless of the programs’ scientific merits, thereby making the progress of genome
science significantly slower than necessary. Dependency hell is an urgent problem to
address in genomics.
Community efforts, such as Bioconda [5], virtually eliminated the software installation
problem for users; eliminating this problem is an enormous achievement. However, cre-
ating a Conda package sometimes requires more time than creating a container image
does, especially when distro-specific configurations (e.g., the existence of pkg-config,
apt) are required to build a third-party package.
This issue is easily mitigated when the filesystem namespace is isolated, as with con-
tainer-based virtualization systems, such as Singularity [6], Docker [7] or udocker [8].
These systems enable developers to use their favorite Linux distributions without strug-
gling to make a program (and its build procedure) compatible with the Conda build
environment. We define modularity of a package by having a separate filesystem names-
pace for that package. Container-based virtualization provides modularity, which helps
developers more easily package and distribute new programs.
However, we lose a certain level of productivity when we migrate from the Conda
environment to containers. This loss is due to the loss of composability, which we discuss
shortly. In other words, researchers often have to spend more time in algorithm develop-
ment when they use containers rather than the Conda environment.
With Conda, we can write programs that call (by exec∗ functions) programs either in
Conda packages or on the host, and we can also package these programs as new Conda
packages because programs on the host and in Conda packages can call each other; we
call this ability mutual composability. In contrast, it is difficult for programs in contain-
ers to call (by exec∗ functions) a program on the host or a program in another container
due to the namespace isolation; we need either to make programs aware of containers or
to write wrapper scripts for the programs to keep using exec∗ functions.
For example, we can write experimental one-off Bash-script-based analysis pipelines
that call binaries in Conda packages. When we migrate to container-based solutions,
the analysis pipelines must be significantly re-engineered such that they call a container
engine instead of directly calling binaries. An environment manager, such as Bulker
[9], helps us generate wrapper scripts so that we can call programs in containers as if
they are programs on the host. However, once we take this approach, we cannot easily
containerize the analysis pipelines themselves because programs in containers cannot
directly call (by exec∗ functions) programs in other containers. Thus, Bulker achieves
only (what we call) one-way composability, not mutual composability. The lack of mutual
composability may become an issue in other situations. For example, the Canu assem-
bler [10] is difficult to package by using current container systems because Canu inside a
container cannot submit jobs (for parallelization) to the batch job engine, which is out-
side the container, while Conda does not suffer from this issue.
Other issues with popular container systems in high-performance computing (HPC),
such as Singularity, are (1) users cannot create a new container image on HPC because
they do not have root privileges, (2) users hesitate to containerize small genomics tools
because a Singularity image must contain a full set of operating system (OS) images even
if the target tool is very small, and (3) when users have accounts on multiple HPC sites,
some sites completely lack container systems, or other sites may have Singularity but
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 3 of 13
Fig. 1 An overview of the LPMX system architecture. LPMX contains a command line interface (CLI) and a
dynamic library wrapping filesystem-related standard C library functions and faking the file system to provide
its features. LPMX can manage the life cycles of created containers and download, import and maintain
external images and tarballs. By configuring containers mappings, such as executable mapping, processes
that reside inside containers can make direct calls to processes on the host or in other containers
with different major versions, thus making the users create many Singularity images,
even for a single tool. Pure rootless container engines, such as udocker, solve prob-
lem (1) and (3), while container engines that support layered file systems (e.g., Docker)
solve problem (2). However, none of the existing systems solve all of the problems
simultaneously.
Here, we propose a new rootless container engine, LPMX, that solves all these issues.
LPMX provides mutual composability for letting a container interface easily with the
host or with another container while maintaining modularity. LPMX runs without root
privileges during runtime or during installation, thus providing users with full features
at any Linux cluster without administrators’ approval. LPMX has the first layered file
system that, unlike an existing similar file system, FUSE-overlayfs [11], is implemented
purely in userspace. Figure 1 shows an overview of the LPMX system architecture, where
LPMX manages the life cycles of created containers and external images. LPMX can
provide mutual composability for letting processes inside containers make direct calls to
processes on the host or in other containers.
Implementation
The primary goals of LPMX are a) to provide composability over containers and hosts,
b) to provide pure rootless containers, and c) to support a layered file system.
To create a pure userspace container system, we developed a fake chroot environ-
ment based on fakechroot [12], a project giving a chroot-like environment to end-users
(nonroot) by employing the LD_PRELOAD hack. The LD_PRELOAD hack enables us
to inject arbitrary functions into dynamic libraries. Because we inject special wrapper
functions, tools see a fake virtual file system that does not truly exist. For example, when
a tool tries to open a file, an injected function replaces the path (in a container) provided
by the tool with a path to the real file on the host, thus enabling processes in the con-
tainer to open files in the container without using root privileges. Using this technique,
we developed a pure userspace layered file system, namely, the Userspace Union File
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 4 of 13
Table 1 Feature comparison between major container systems and virtual machines (VM)
Features LPMX Docker Singularity VM udocker podman
Composabilitya Y N N N N N
Pure rootlessb Y Ne N N Y Ne
Use docker image Y Y Y N Y Y
Use singularity image Y N Y N N N
Support layered filesystem Y Y N N N Y
Run programs statically linked to glibc Nd Y Y Y Y Y
GPGPU support Y Y Y Y Y Y
a
Allow processes in one container to make exec calls to other processes on the host or in other containers via standard
posix application programming interface (API), such as posix_spawn
b
Do not require root/sudo privileges in any stage, such as when installing a container system and its dependencies, nor
when creating containers
c
Singularity supports only up to two layers, but creating and using an overlay layer requires root privileges in practice
d
Proprietary software is occasionally statically linked to glibc
e
Podman and rootless Docker themselves can be installed without root privileges, although installing and configuring
dependencies, such as uidmap, and some kernel parameters require root privileges on major Linux distributions in HPC
system (UUFS), and integrated it into LPMX. The underlying data structure of UUFS is
compatible with Docker, so we can easily import Docker images while retaining layers.
The composability is implemented in LPMX by wrapping exec* functions in the GNU
C library with the LD_PRELOAD hack. When a process inside the container calls an
exec* function, LPMX traps the function, and if the callee is one of the list of executables
to compose, LPMX redirects the exec call to the target executable, which might be on
the host or in another container.
Like Docker, Singularity, and udocker, LPMX also has a specific general-purpose
graphics processing unit (GPGPU) support. Feature comparison Table 1 lists the key fea-
tures of LPMX compared to existing popular implementations.
Results
Example of composing a container with executables on the host
To demonstrate the composability of LPMX, we containerized Canu [10] assembler (ver
2.1.1), a popular de novo assembler for long reads. The Canu assembler can automati-
cally detect major batch job systems, e.g., Univa Grid Engine (UGE), and configure itself
to work with the batch job system for distributed execution. If we naïvely containerize
the Canu assembler, the containerized Canu assembler would try to find a batch job
engine inside the container; however, the batch job engine is on the host, which is out-
side the container. We would have to create a host daemon that receives requests from
inside the container via TCP sockets so that the Canu assembler can submit new jobs
to the batch job engine. Creating such a daemon is, in theory, possible, but requires sig-
nificant engineering. Another problem with this approach is that we need to modify the
container image, which is often provided by third parties; once we modify anything in
the container image, we need to keep up with upstream changes forever, and this need is
a large burden. We need a way to keep up with upstream changes without modifying any
files in the container to avoid future maintenance burden. LPMX provides a way to allow
processes inside a container to call executables on the host or executables on another
container; we call this ability composability.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 5 of 13
Fig. 2 Example of composing a host process and container. (1) The Canu assembler uses batch commands
(e.g., qhost) to query information from the job engine system. The Canu assembler container image is not
modified, but LPMX transparently redirects the commands to the host batch job engine. (2) When submitting
a job (e.g., use qsub), the command is trapped by LPMX and redirected to fakeqsub, which is a delegate
program that generates a shell script to restore containers on other compute nodes. (3) Then, fakeqsub calls
the host qsub to submit the generated shell script. (4) When the generated shell script is executed on other
compute nodes, the LPMX container is resumed, and the containerized Canu assembler is launched. These
redirections occur based on the LPMX configuration so that the container image and the Canu assembler do
not require modification, which makes it easier to keep up with upstream changes
Due to the lack of composability, traditional container systems, such as Singular-
ity, cannot be used to containerize the Canu assembler without modifying files inside
images. LPMX readily solves this issue (Fig. 2). This example shows that the container-
ized Canu assembler can readily directly call executables on the host, and that the Canu
assembler remains fully workable (distributing computation to many nodes in parallel)
inside LPMX thanks to composability.
To show that the composability feature of LPMX works as expected, we used E. coli
K12 Oxford Nanopore reads1 with the Canu assembler on the supercomputer SHIRO-
KANE,2 equipped with UGE, in the Human Genome Center (HGC). LPMX successfully
distributed computation to multiple nodes. The version of LPMX we used in this manu-
script is alpha-1.6.3.
Example of composing a container with other containers
In exploratory experiments in genomics, combinations of different tools and different
versions of the same tools are tested to obtain better results. With previous container
systems, researchers have to spend considerable time and effort containerizing all com-
binations manually into a single container. If every tool in the pipeline is isolated as a sin-
gle container, again, we need to develop a glue daemon that connects one container with
another. Additionally, we need to modify programs inside containers so the programs
transmit data and requests to another program in another container due to the lack of
composability. Once we go in this direction, we suffer from the maintenance burden. We
do not wish to modify any files inside container images provided by third parties. LPMX
1
http://nanopore.s3.climb.ac.uk/MAP006-PCR-1_2D_pass.fasta.
2
https://supcom.hgc.jp/shirokane.html.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 6 of 13
Fig. 3 An overview of the container-container composability experiment. We first separated and
containerized different tools into different containers to mimic the situation where users do not want to
edit anything inside containers to exploit existing container images. Next, we created a pipeline container
(without any analysis tools installed) by using the composability of LPMX. The pipeline container is composed
from existing containers (tools) as if they were installed locally in the pipeline container. Consequently, the
user can download a third-party pipeline image and plug different versions of the tools used in the original
image to see the difference without modifying files inside the original image; to our knowledge, LPMX is the
only tool that provides us with container-container composability. All containers shared the same directory in
the host to allow data access and exchange. We put the E. coli K12 and E. coli O-157 datasets into the shared
folder so that all containers could access it
can map executables in one container to certain paths in another container so executa-
bles in the former can call executables in the latter. When an executable in the latter is
called, the executable is launched in a new container with the container image of the
latter; in this way, we can isolate tools as much as possible while letting users develop a
pipeline that uses potentially conflicting tools without concerns.
To demonstrate the composability over multiple containers, a structural variation
calling experiment on the reads of E. coli O-157 (SRR5383868) against the reference
genome dataset E. coli K12 MG1655 (GCA_000005845.2) consisting of using different
tools was performed. This experiment was conducted using a virtual machine created by
VirtualBox (ver 6.0.24, employing Vagrant), and the virtual machine file and experiment
scripts are available on Vagrant Cloud3 for reproducibility. We composed different con-
tainerized tools, including bwa (ver 0.7.17-r1198-dirty) [13], minimap2 (ver 2.10-r761
& 2.17-r941) [14], samtools (ver 1.11) [15], and different versions of the Genome Analy-
sis Toolkit (GATK) (ver 3.8-1-0-gf15c1c3ef & 4.1.9) [16], into a pipeline container for
testing various combinations of the software. Figure 3 shows that LPMX allowed end
users to combine arbitrary containers; users can easily replace a tool used in a pipeline
container with a newer (or older) version to see how the result would change without
changing any files/directories inside existing containers.
Container creation and destruction speed benchmark
UUFS in LPMX has a small overhead for launching a new process. To compare the con-
tainer creation and destruction speed of LPMX (ver alpha-1.6.3) to those of Docker
(ver 19.03.6), Singularity (ver 3.7.0), udocker (ver 1.1.4) [8], and podman (ver 1.6.2)
3
https://app.vagrantup.com/jasonyangshadow/boxes/composability.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 7 of 13
Fig. 4 Average time (in ms; lower is better) required to create a container by several container systems. The
compared container systems are: Docker (version: 19.03.6), podman (version: 1.6.2), Singularity (version: 3.7.0),
udocker (version: 1.1.4), LPMX (version: alpha-1.6.3). The host was equipped with an Intel i7-8750H processors
@2.2GHz (6 cores and 12 threads) and 32 GB RAM memory. The virtual machine was version 6.1. The
virtualized host was Ubuntu 18.04.5 LTS (Bionic Beaver). The memory size was 1024 MB. The containerized
Guest OS was also Ubuntu 18.04 LTS (Bionic Beaver) downloaded from DockerHub by using the tag
Ubuntu:18.04. A shell script was executed in the virtualized host OS to evaluate the performance. The script
creates and then immediately destroys the container and measures time cost. The time command measures
the resource usage of a given running command and outputs the elapsed real time between invocation and
termination, the user CPU time, and the system CPU time. We summed the user and the system CPU times
to obtain the total time required to run the userspace logic code and execute the kernel space system calls
during the run
[17], we created and destroyed a container ten times and measured the associated time
cost by using the shell built-in time command. The time for launching a new process is
reduced by up to 6-fold for LPMX compared to other implementations (Fig. 4). We used
a virtual machine using VirtualBox (employing Vagrant) with experimental materials.4 ,
5
The experiment was repeated five times, and the data were averaged to represent a
more accurate result. LPMX can minimize the overhead of splitting a large pipeline into
smaller containerized components or tools to avoid conflicts between the components.
A caveat is that compared to Singularity, the LPMX approach might put a larger burden
on a central shared file system, so Singularity might scale well beyond a certain large
number of nodes.
Acceptable runtime overhead on a supercomputer
The LD_PRELOAD hack substantially wraps the original default (glibc) functions and
executes extra code in the userspace, thereby possibly triggering additional system calls
and causing some performance overhead. However, the read/write functions are kept
untouched inside LPMX; these functions are frequently called in genome analysis and
4
https://app.vagrantup.com/jasonyangshadow/boxes/benchmark_ubuntu1804.
5
https://github.com/JasonYangShadow/experiment_attachments.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 8 of 13
Table 2 Running time for bwa-mem2 (ver 2.2.1), samtools (ver 1.13 with htslib) and GATK (ver 4.2.1.0
with HTSJDK ver 2.24.1 Picard ver 2.25.4) with the same dataset on the bare host and LPMX
Tool Bare Host (min) LPMX (min)
bwa-mem2 162.1 ± 9.7 150.4 ± 4.5
samtools 495.9 ± 93.8 446.1 ± 6.0
GATK4 854.5 ± 68.5 864.6 ± 70.2
For GATK, we record the time for HaplotypeCaller. During the experiment, the shared file server is moderately loaded. The
time difference between the bare host and LPMX can be explained largely by varying loads of the central shared file system
over time, not by the performance overhead of LPMX. Data files and read files are available here (https://github.com/
genome-in-a-bottle/giab_data_indexes/blob/master/AshkenazimTrio/sequence.index.AJtrio_Illumina300X_wgs_07292015.
HG002, https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/). The scripts are available here (https://github.com/
JasonYangShadow/experiment_attachments)
will not be slowed down. We performed a structural variant calling analysis on the
HG002 human genome reads from NIST’s Genome in a Bottle (GIAB) project (sequenc-
ing depth: 30x) against GRCh38 Genome Reference Consortium Human Reference 38
and measured the time on the supercomputer SHIROKANE in the Human Genome
Center located at the Institute of Medical Science, the University of Tokyo. We could not
observe performance overhead larger than variance over multiple experiments. We ran
the experiments five times and calculated the averages. The results suggest that the per-
formance overhead in real-world genome analysis pipelines is acceptable.
Benchmark on worst‑case runtime overhead of LPMX
A possible criticism against the UUFS architecture that adopts pure userspace
implementation might be that metadata operations are slow. Here, we designed a
performance benchmark test to reveal the worst performance overhead case of
LPMX compared to other implementations. The experiment was designed and
executed inside the same environment used in the section. As software installation
imposes a heavy I/O in genome analysis, we measured the overhead thereof. The
root reason for performance overhead is caused by the execution of userspace logic
code and extra system calls in kernel space. To evaluate the performance overhead
of LPMX, common software and packages (such as GCC, Python3, Ruby and Java
Runtime Environment (JRE)), are installed, and the most popular genome analysis
tools and their dependencies, (i.e., samtools and htslib) are compiled. The versions
of all software are the same as those in the previous sections. The experiments were
repeated five times and the average time costs measured by the built-in time com-
mand were calculated. As shown in Fig. 5, with respect to installing and compiling
packages, the performance overhead of LPMX was 1.5 times greater than that of the
other container system implementations. However, users usually need to install soft-
ware only once inside containers; therefore, the performance overhead suffers only
once. However for actual analysis repeatedly executed inside containers, only mini-
mal performance overhead was observed as shown in Table 2, because functions,
e.g., read/write, frequently called in the analysis are unwrapped in LPMX so that the
raw performances are preserved.
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 9 of 13
Fig. 5 Average time when installing and compiling the same packages in different container systems.
Typically, LPMX exhibits performance overhead slightly more than other implementations. Reducing the
search layer depth reduces the overhead
Table 3 Performance information returned by the Guppy basecaller (ver 3.4.5+fb1fbfb) at the end
of the experiment (caller time, called samples and calling speed)
Host Time (s) # Samples called # Sample per second
Bare Host 1344 18,614,227,490 1.38475e+07
LPMX 1343 18,614,227,490 1.38643e+07
The host is equipped with an Intel(R) Xeon(R) CPU X5650 @2.67 GHz with 24 cores, GeForce GTX 1080 GPU, 192 GB RAM
memory, and its driver info is NVIDIA-SMI: 440.64.00 / Driver ver 440.64.00 / CUDA ver 10.2. We used the Chip137 IVT
NA12878 RNA dataset (https://s3.amazonaws.com/nanopore-human-wgs/rna/links/NA12878-IVT-RNA_All.files.txt), which
contains 313 fast5 split files with a total size of approximately 35 GB
GPGPU support
GPGPUs are becoming more popular as more genomics applications are optimized
appropriately. Docker, Singularity, and udocker support GPGPU. We thus added
GPGPU support to LPMX. As LPMX can expose arbitrary files and directories on the
host to a container, we exposed GPGPU-related files (especially special devices) to con-
tainers. To test whether GPGPUs can be used inside containers, we ran Guppy, a pro-
prietary basecaller for Oxford Nanopore sequencers using GPGPUs. Guppy successfully
used GPGPUs inside an LPMX container and we observed that there were no difference
in outputs and the processing speed, as we expected. We executed the experiment five
times and calculated the average values. As shown in Table 3, we observed no perfor-
mance overhead.
Benchmark on importing docker images
Docker can produce a tarred file containing all layers and metadata, which can be
imported by other container systems to reproduce environments easily without recreat-
ing everything from scratch. Singularity and LPMX can import Docker saved tarballs to
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 10 of 13
recreate the containers by reading the metadata, importing layers, and establishing cor-
rect runtimes. Singularity requires additional steps to squash extracted layers to create
a read-only Singularity image, while LPMX can utilize incorporated UUFS mentioned
in the section to directly mount extracted layers from saved tarballs and is thus more
efficient than Singularity, especially when importing many Docker saved tarballs. We
measured the import performances of Singularity and LPMX using the same environ-
ments mentioned in the section. The versions of all software are the same as those in
the previous sections. We randomly selected five Docker images from the Biocontainers
repository on the Docker Hub, imported these images using Singularity and LPMX, and
measured the time costs by using the Linux built-in time command. We ran the experi-
ment five times and calculated the average times. Compared with LPMX, Singularity
was 2.5 times slower.
Discussion
Limitations
Incompatibility with Singularity/Docker
A certain types of Singularity/Docker images do not run in LPMX containers for four
reasons: (1) Singularity/Docker can run binaries statically linked with a standard C
library; however, LPMX does not work for such binaries because statically linked func-
tions cannot be trapped by the LD_PRELOAD hack that LPMX relies on, and hence,
LPMX cannot fake the file system. In practice, binaries statically linked with a standard
C library are rarely distributed except for proprietary programs without access to the
source code. When the source code is available, recompiling these binaries with a shared
standard C library is a recommended workaround. If the source code is unavailable,
users can install such statically linked executables on the host and call these executables
from inside container by exposing them to LPMX, if needed. (2) A standard C library
other than glibc is not tested, although such libraries may work well with LPMX. (3)
LPMX does not work with a root account; therefore, this would not be a practical prob-
lem. (4) Binaries compiled with Link-Time Optimization (LTO) may not work because
of technical issues with the dynamic loader. We are investigating the issues for finding a
workaround.
Limitations of container systems
Another possible situation that may frustrate users when a container image does not run
on a container system is when a standard C library in the container image is significantly
newer than the version of glibc on the host. However, this situation happens mainly
because newer glibc relies on newer system calls in newer Linux kernels, so Singularity/
Docker also have this issue (so LPMX is “compatible” in this case).
Limitations due to the nature of pure rootless container systems
(1) The process ID (PID) namespace is not isolated in LPMX as the namepsace is in
Docker/Singularity. For example, the ps command shows all processes on the host,
whereas the ps in Docker/Singularity shows only processes inside the container. (2)
Setuid/setgid executables do not work inside LPMX containers because LD_PRELOAD
is disabled by Linux for such executables. (3) Programs cannot open files or devices only
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 11 of 13
accessible by privileged users. (4) Programs cannot listen on privileged ports (below
1024). (5) Programs cannot mount file systems that require privilege on the host. (6)
Programs cannot change system settings, including userid, groupid, and system time;
network settings, such as firewall rules and interfaces.
Practical limitations in genome analysis
These limitations usually would not be a major problem when users execute a genome
analysis pipeline with only open-sourced tools that input files and output files without
interacting with network sockets; this type of execution is the common case for genome
analysis pipelines.
Security
In contrast with a Docker daemon that has potential security risks, LPMX is a pure root-
less, nonsetuid program. Therefore, using LPMX will not increase any security risks
by design. Unlike container system implementations that rely on the unprivileged user
namespaces technique, LPMX will not increase risks of the host system being compro-
mised via zero-day bugs, for example, this bug [18] in the Linux kernel.
The necessities of a pure rootless container system on HPC systems
Rootless in container technology refers to the ability of unprivileged users to create and
manage containers. Pure rootless, as defined in the manuscript, refers to the property
that privileges are not required even when installing the container system itself and
when launching new containers. This property is desired because users can use the same
container system at multiple sites regardless of Linux kernels and distributions. Addi-
tionally, the attack surface of rapidly evolving software on the host is minimized, and no
additional potential risks will be introduced; this situation is suitable for multiple-tenant
systems that may have sensitive information such as patients’ genomes.
When a researcher asks administrators to install Docker, the administrators are con-
cerned about security. Docker, which uses a daemon with root privileges, had several
critical security bugs [19] in the past. The recent Docker version implements a nonroot
mode [20] to reduce such concerns but still suffers security issues from using the unpriv-
ileged user namespace. In addition, to enable the nonroot mode, necessary packages,
e.g., newuidmap, and fuse-overlayfs, need to be installed in advance; package instal-
lations also require root privileges and introduce new security risks. Our system does
not require root during both the installation and runtime of containers. The pure root-
less design also eliminates security concerns, as the design does not enhance any privi-
leges in userspace. These properties ensure that one can use the same container engine,
namely, LPMX, at all sites.
Future work
Container systems are often used with workflow management systems, and therefore,
integrating LPMX into major workflow management systems as an alternative to Singu-
larity/Docker is the next step to take. However, integration in this manner allows users
to benefit from the composability of LPMX. Therefore, we need to provide an easy way
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 12 of 13
for the authors of workflow management systems to utilize the composability of LPMX.
One possible way to approach this issue is to create a hub (let us call it LPMXHub here-
after). Any workflow management system that we know of allows users to specify a pair
of a container system (e.g., Singularity) and a string to specify a container image (e.g., a
hash value). Developers write a simple YAML file that describes a composed environ-
ment and publish it in LPMXHub, thereby allowing workflow developers to specify a
pair of LPMX and the published environment in the workflow description. In this way,
workflow management systems would benefit from the composability of LPMX with
minimal efforts.
Conclusions
We developed LPMX, an open-source pure rootless composable container system that
provides composability to enable users to easily integrate tools from different containers or
even from the host. LPMX saves time by letting researchers compose existing containers
and containerize tools that are difficult to package, thereby accelerating science.
Abbreviations
HPC: High-performance computing; CLI: Command line interface; UUFS: Userspace Union File System; GPGPU: General-
purpose graphics processing unit; API: Application programming interface; UGE: Univa Grid Engine; HGC: Human
Genome Center; GATK: Genome Analysis ToolKit; GIAB: Genome in a Bottle; JRE: Java Runtime Environment.
Acknowledgements
The supercomputing resource was provided in part by the Human Genome Center (the University of Tokyo) and in part
by the NIG supercomputer at the ROIS National Institute of Genetics.
Authors’ contributions
XY wrote all the code, carried out all the experiments, and drafted the manuscript. MK conceived the initial idea. Both
analyzed the results and wrote the manuscript. The authors read and approved the final manuscript.
Funding
This work has been supported in part by JSPS KAKENHI Grant Numbers 16H06279 (PAGS) and 16K16145. The funding
body played no role in the design of the study; the collection, analysis, and interpretation of the data; or the writing of
the manuscript.
Availability of data and materials
All genomic data were downloaded from public databases, and the origins of the data are indicated in the main text
where the data were used.
Declarations
Ethics approval and consent to participate
Not applicable.
Consent for publication
Not applicable.
Availability and requirements
Project name: LPMX; Project home page: https://github.com/JasonYangShadow/lpmx; Operating system(s): GNU/Linux
(x86_64); Programming language: Go, C; Other requirements: glibc; License: Apache License 2.0 & GNU LESSER GENERAL
PUBLIC LICENSE (ver 2.1); Any restrictions to use by nonacademics: None.
Software and code
The LPMX source code is open source at https://github.com/JasonYangShadow/lpmx with Apache-2.0 License at
https://github.com/JasonYangShadow/lpmx/blob/master/LICENSE.
Competing interests
The authors declare that they have no competing interests.
Received: 9 September 2021 Accepted: 23 March 2022
Yang and Kasahara BMC Bioinformatics (2022) 23:112 Page 13 of 13
References
1. Leipzig J. A review of bioinformatic pipeline frameworks. Brief Bioinform. 2017;18(3):530–6.
2. Koboldt DC, Zhang Q, Larson DE, Shen D, McLellan MD, Lin L, Miller CA, Mardis ER, Ding L, Wilson RK. Varscan
2: somatic mutation and copy number alteration discovery in cancer by exome sequencing. Genome Res.
2012;22(3):568–76.
3. Lai Z, Markovets A, Ahdesmaki M, Chapman B, Hofmann O, McEwen R, Johnson J, Dougherty B, Barrett JC, Dry JR.
Vardict: a novel and versatile variant caller for next-generation sequencing in cancer research. Nucleic Acids Res.
2016;44(11):108–108.
4. Kim S, Scheffler K, Halpern AL, Bekritsky MA, Noh E, Källberg M, Chen X, Kim Y, Beyter D, Krusche P. Strelka2: fast and
accurate calling of germline and somatic variants. Nat Methods. 2018;15(8):591–4.
5. Grüning B, Dale R, Sjödin A, Chapman BA, Rowe J, Tomkins-Tinch CH, Valieris R, Köster J. Bioconda: sustainable and
comprehensive software distribution for the life sciences. Nat Methods. 2018;15(7):475–6.
6. Kurtzer GM, Sochat V, Bauer MW. Singularity: scientific containers for mobility of compute. PLoS ONE.
2017;12(5):0177459.
7. The Docker Community: Why Docker? https://www.docker.com/why-docker. Accessed 2 Sep 2020; 2020.
8. Gomes J, Bagnaschi E, Campos I, David M, Alves L, Martins J, Pina J, López-García A, Orviz P. Enabling rootless Linux
containers in multi-user environments: the udocker tool. Comput Phys Commun. 2018;232:84–97.
9. Sheffield NC. Bulker: a multi-container environment manager; 2019.
10. Koren S, Walenz BP, Berlin K, Miller JR, Bergman NH, Phillippy AM. Canu: scalable and accurate long-read assembly
via adaptive k-mer weighting and repeat separation. Genome Res. 2017;27(5):722–36.
11. Open Repository for Container Tools: Fuse-overlayfs: FUSE implementation for overlayfs. https://github.com/conta
iners/fuse-overlayfs. Accessed 3 Jan 2021; 2020.
12. dex4er: Fakechroot Implementation. https://github.com/dex4er/fakechroot. Accessed 2 Sep 2020; 2020.
13. Li H. Aligning sequence reads, clone sequences and assembly contigs with bwa-mem. arXiv preprint arXiv:1303.
3997; 2013.
14. Li H. Minimap2: pairwise alignment for nucleotide sequences. Bioinformatics. 2018;34(18):3094–100.
15. Li H, Handsaker B, Wysoker A, Fennell T, Ruan J, Homer N, Marth G, Abecasis G, Durbin R. The sequence alignment/
map format and samtools. Bioinformatics. 2009;25(16):2078–9.
16. McKenna A, Hanna M, Banks E, Sivachenko A, Cibulskis K, Kernytsky A, Garimella K, Altshuler D, Gabriel S, Daly M. The
genome analysis toolkit: a mapreduce framework for analyzing next-generation dna sequencing data. Genome Res.
2010;20(9):1297–303.
17. Podman Community: Podman: Manage pods, containers, and container images. https://podman.io. Accessed 2 Sep
2020; 2020.
18. CVE-CVE-2021-33909. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-33909. Accessed 31 July 021.
19. Details C. Docker Docker: list of security vulnerabilities. https://www.cvedetails.com/vulnerability-list/vendor_id-
13534/product_id-28125/Docker-Docker.html. Accessed 9 Nov 2020.
20. The Docker Community: Run the Docker daemon as a non-root user (Rootless mode). https://docs.docker.com/
engine/security/rootless. Accessed 2 Sep 2020; 2020.
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Ready to submit your research ? Choose BMC and benefit from:
• fast, convenient online submission
• thorough peer review by experienced researchers in your field
• rapid publication on acceptance
• support for research data, including large and complex data types
• gold Open Access which fosters wider collaboration and increased citations
• maximum visibility for your research: over 100M website views per year
At BMC, research is always in progress.
Learn more biomedcentral.com/submissions