summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init')
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init34
1 files changed, 23 insertions, 11 deletions
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
index 5f52a16d..ea37582b 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
@@ -16,15 +16,16 @@ load_image () {
else
# In this case a pre build container image (tar archive from "docker save ...")
# will be loaded into the local docker daemon.
- echo "+ load container image"
- # create TMP_FILE for image
+ echo "+ load container image... (please be patient)"
+ # create TMP_FILE for docker load output
local TMP_FILE=$(mktemp)
- # write currently existing image ids into TMP_FILE
- cp $VM_DISKFILE_RO $TMP_FILE
- # recieve the RepoTag form the manifest.json inside the tar
- local REPO_TAG=$(tar -axf $TMP_FILE manifest.json -O | jq -r '.[].RepoTags[0]')
+
+ # TODO no progress output for docker load
# load image from tar file
- docker load --input $TMP_FILE
+ pv -cN "Image Transfer" < $VM_DISKFILE_RO | docker load -q > $TMP_FILE
+ echo "+ $(cat $TMP_FILE)"
+
+ local REPO_TAG=$(head -n 1 $TMP_FILE | cut -d" " -f3)
# rename image
docker tag "$REPO_TAG" "$CONTAINER_IMAGE_NAME"
rm -f -- "$TMP_FILE"
@@ -35,8 +36,18 @@ load_image () {
main ()
{
- # TODO only check by image name could be bad, images whith a same name could exist
+ if [[ -n $CONTAINER_REPO_NAME ]]; then
+ echo "pull container $CONTAINER_REPO_NAME"
+ docker pull $CONTAINER_REPO_NAME
+
+ [ "$?" != 0 ] && echo ".. docker pull not successful ...giving up..." && exit -1
+
+ CONTAINER_IMAGE_NAME="$CONTAINER_REPO_NAME"
+ fi
+
+ # TODO only check by image name could be bad, images whith a same name could exist
+
# check if the container_image_name already loaded in docker daemon
if [[ -z $(docker images $CONTAINER_IMAGE_NAME -q) ]]; then
echo "+ Image unknown by docker daemon ..."
@@ -54,8 +65,8 @@ main ()
fi
echo "+ start container..."
- echo "+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME"
- docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME
+ echo "+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME $CONTAINER_RUN_COMMAND"
+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME $CONTAINER_RUN_COMMAND
if [[ "$?" != "0" ]]; then
echo "...container start failed!...giving up..."
@@ -64,7 +75,8 @@ main ()
if [[ -n $RUNSCRIPT ]]; then
echo "+ execute user runscript"
- /bin/bash $RUNSCRIPT
+ NOHUP_TMP=$(mktemp)
+ nohup /bin/bash $RUNSCRIPT > "$NOHUP_TMP" & tail -f "$NOHUP_TMP"
fi
}