Releases: JasonYangShadow/lpmx
Alpha Pre-Release v2.0.1
In this release, I have added new support for parsing yaml file, users can have docker-compose like experience when using LPMX.
The command to use compose
is:
lpmx compose -f yaml_file
version: 1
apps:
- name: "minimap2"
image: "evolbioinfo/minimap2:v2.17"
type: "docker"
expose:
- /usr/local/bin/minimap2:minimap2
share:
- /home/vagrant/share:/share
- name: "target"
image: "jasonyangshadow/example:1"
type: "docker"
command: "minimap -V && minimap '-a /share/human.fa /share/orang.fa > /share/test.sam'"
inject:
- /home/vagrant/bin/minimap2:/usr/bin/minimap
share:
- /home/vagrant/share:/share
depends:
- minimap2
- name: "singularity container"
image: "/home/vagrant/ubuntu.sif"
type: "singularity"
command: "cat /etc/os-release && echo $hello"
envs:
- hello=1
- world=2
An explanation for the yaml template structure:
version
(required) is the yaml template version info, should be1
hereapps
(required) defines the top level apps label, just hardcoded- Followings are all container definitions
name
(required): container name, user definedimage
(required): container image name (DockerHub name or local absolute path for sif file)type
(required): should bedocker
orsingularity
command
(optional): command running inside containerinject
(optional): inject binaries from host or other container into current container (should be absolute path)share
(optional): directories shared between host and containerdepends
(optional): define the requirement of current container, name defined independs
should exist in yaml fileexpose
(optional): expose apps inside current contains to host or other containersenvs
(optional): environment variables added to containersport
(optional): mapping ports (not support now)
An example showing the usage. (The example is from https://github.com/JasonYangShadow/lpmx#quick-run)
The demo shows that we are composing two containers, one is built based on docker image named evolbioinfo/minimap2:v2.17
, another one is based on docker image named jasonyangshadow/example:1
, the definitions in the yaml file indicates that:
- for container named
minimap2
, it exposes inside minimap2 to host (version: 2.17-r941) - for container named
target
, it injects exposed minimap2 (version: 2.17-r941) into itself and thus overrides its default minimap (version: 0.2-r123), and runs minimap analysis based on the data in shared folder with host. - for container named
singularity container
, it extracts and imports layers from sif image and runs simple commands inside container
This demo shows that LPMX can inject apps in other containers into current container to dynamically override inside executables without touching the image. Fantastic, hah! isn't it?
Alpha Pre-Release v1.9.2
Remove configuration writing to bashrc
Alpha Pre-Release v1.9.1
In this version, I patched the hard-link untar issue, where all binaries in the bin or sbin folder are hard linked to /bin/arch file in the specific distro.
No impacts for other distros.
Alpha Pre-Release v1.9.0
Important (this release is an experimental one, we removed some dependencies and compile the libfakechroot against glibc 2.12 in centos 6.10 for better compatibility, but might cause some unexpected issues)
From version v.1.9.0, LPMX changes a lot on its implementation, such as removing its dependency of Memcached, which means it won't use Memcache as the info exchanger any longer, but using pure file instead, which will reduce the dependency complexity of LPMX.
From the end user's perspective, please do not upgrade for now until the release becomes more stable and passes more tests.
For the old version (<1.9.0), I will continue providing support.
Alpha Pre-Release v1.8.1
In this release we add a --use-old-glibc
option for LPMX to solve exceptions when container image & host are incompatible on glibc.
In the following example, you can see that by using lpmx reset
command we can reset the environment with different glibc compiling against libfakechroot. so that some glibc mismatch issue will be eliminated.
Alpha Pre-Release v1.8
Add a new feature that directly importing directories generated from Skopeo.
https://github.com/containers/skopeo
LPMX can parse the manifest.json file generated by Skopeo and copy the layers to LPMX data directory.
Alpha Pre-Release v1.7.2
add docker merge sub-command for merging the layers of both local docker images and images downloaded from docker hub.
lpmx docker merge image:tag
it will automatically generate a new image with only one layer named image:tag-merge
Notice:
from this version for volume mapping parameter, please change to use the following format:
lpmx docker create -v host_path1=container_path1:host_path2=container_path2 image:tag
Alpha Pre-Release v1.7.1
Add support for direct executable mapping through CLI
lpmx docker create -m host_path1=container_path1:host_path2=container_path2 ubuntu:16.04
lpmx docker fastrun -m host_path1=container_path1:host_path2=container_path2 ubuntu:16.04 "container_path1"
Some fixes on the 'lpmx list' command
Alpha Pre-Release v1.7
Add new features of caching exchanging info to file.
Add new support for containerizing the canu assembler.