summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt-docker
diff options
context:
space:
mode:
authorralph isenmann2021-11-15 16:36:46 +0100
committerralph isenmann2021-11-15 16:36:46 +0100
commit98233024c9696ab8321bbbe19d4a5a72a7e75874 (patch)
treeafa57a4ea7a55ef7126fc9aa61372b7bb6f12fb4 /core/modules/run-virt-docker
parentFix git retry logic (diff)
downloadmltk-98233024c9696ab8321bbbe19d4a5a72a7e75874.tar.gz
mltk-98233024c9696ab8321bbbe19d4a5a72a7e75874.tar.xz
mltk-98233024c9696ab8321bbbe19d4a5a72a7e75874.zip
[run-virt-docker] add data-container; restructure init; introduce docker-archive as container-context
- clients now able to create a data volume from a specified data-container -- REQURIES openslx-sat commit 4bd355c8b9724dec6268e71e9a18a326978d4317
Diffstat (limited to 'core/modules/run-virt-docker')
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf12
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init147
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop2
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc88
-rw-r--r--core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc46
5 files changed, 246 insertions, 49 deletions
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
index fd398929..b4761599 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
@@ -9,15 +9,3 @@ function writelog () {
echo $1
}
-export DOCKER_PLUGIN_DIR=""
-export DOCKER_INCLUDE_DIR=""
-export TMPDIR=""
-export RUNSCRIPT=""
-
-export VM_DISKFILE_RO=""
-
-export CONTAINER_REPO_NAME=""
-export CONTAINER_BUILD_CONTEXT=""
-export CONTAINER_IMAGE_NAME=""
-export CONTAINER_RUN_OPTIONS=""
-export CONTAINER_RUN_COMMAND=""
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 ea37582b..c903e5a6 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
@@ -1,6 +1,6 @@
#!/bin/bash
-USER_CONTAINER_CONFIG=""
+USER_CONTAINER_CONFIG="$HOME/.local/docker/.bwlp-user-conf"
echo "+ source user_config $USER_CONTAINER_CONFIG"
source $USER_CONTAINER_CONFIG
@@ -9,11 +9,8 @@ load_image () {
IMAGE_SIZE=$(stat --printf="%s" $VM_DISKFILE_RO)
# check file size of VM_DISKFILE_RO is equals to 4096 = 4kB (because of padding)
- if [[ $IMAGE_SIZE -eq 4096 ]]; then
- echo "+ build container image with build_context"
- echo "+ docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT"
- docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT
- else
+
+ if [[ $CONTAINER_IMAGE_CONTEXT == "DOCKER_ARCHIVE" ]]; then
# 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... (please be patient)"
@@ -29,15 +26,151 @@ load_image () {
# rename image
docker tag "$REPO_TAG" "$CONTAINER_IMAGE_NAME"
rm -f -- "$TMP_FILE"
+
+ elif [[ "$CONTAINER_IMAGE_CONTEXT" == "DOCKERFILE" || "$CONTAINER_IMAGE_CONTEXT" == "GIT_REPO" ]]; then
+ echo "+ build container image with build_context"
+ echo "+ docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT"
+ docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT
fi
retval=$?
return $retval
}
+function build_container_image()
+{
+ echo "+ build container image with build_context"
+ echo "+ docker build --tag $CONTAINER_IMAGE_TAG $CONTAINER_IMAGE_BUILD_CONTEXT"
+ docker build --tag $CONTAINER_IMAGE_TAG $CONTAINER_IMAGE_BUILD_CONTEXT
+}
+
+function load_container_image()
+{
+ # load a pre build container image (tar archive from "docker save ...")
+ # into the local docker daemon.
+ echo "+ load container image... (please be patient)"
+ # create TMP_FILE for docker load output
+ local TMP_FILE=$(mktemp)
+
+ # TODO no progress output for docker load
+ # load image from tar file
+ pv -cN "Image Transfer" < $DATA_CONTAINER_DNBD3_IMAGE | docker load -q > $TMP_FILE
+ retval=$?
+ echo "+ $(cat $TMP_FILE)"
+ local REPO_TAG=$(head -n 1 $TMP_FILE | cut -d" " -f3)
+ # rename image and remove old tag
+ writelog "docker tag $REPO_TAG $CONTAINER_IMAGE_TAG"
+ docker tag "$REPO_TAG" "$CONTAINER_IMAGE_TAG"
+ docker rmi "$REPO_TAG" > /dev/null
+ rm -f -- "$TMP_FILE"
+ return $retval
+}
+
+function prepare_dnbd3_mount()
+{
+ # prepare dnbd3 mount
+ DATA_CONTAINER_DNBD3_MOUNT="${DATA_CONTAINER_DIR}/dnbd3.fuse"
+ DATA_CONTAINER_DNBD3_LOG="${DATA_CONTAINER_DIR}/dnbd3.log"
+ DATA_CONTAINER_DNBD3_IMAGE="${DATA_CONTAINER_DNBD3_MOUNT}/img"
+
+ mkdir -p $DATA_CONTAINER_DNBD3_MOUNT
+ # check DNBD3_MOUNT dir exists and is not used
+
+ if [[ -d $DATA_CONTAINER_DNBD3_MOUNT ]]; then
+ if [[ -n "$(ls -A $DATA_CONTAINER_DNBD3_MOUNT)" ]]; then
+ writelog "+ mount directory not empty"
+ umount "$DATA_CONTAINER_DNBD3_MOUNT"
+ find "$DATA_CONTAINER_DNBD3_MOUNT" -mindepth 1 -delete
+ fi
+ fi
+
+ source /opt/openslx/config
+ writelog "dnbd3-fuse --host $SLX_DNBD3_SERVERS --image $BWLP_IMAGE_PATH $DATA_CONTAINER_DNBD3_MOUNT"
+ dnbd3-fuse --log $DATA_CONTAINER_DNBD3_LOG --host "${SLX_DNBD3_SERVERS}" --image $BWLP_IMAGE_PATH $DATA_CONTAINER_DNBD3_MOUNT > /dev/null 2>&1
+ echo "RETVAL $?"
+ if [[ ! -f $DATA_CONTAINER_DNBD3_IMAGE ]]; then
+ writelog "+ -FAIL- dnbd3-fuse failed to mount image"
+ return 1
+ fi
+
+ return 0
+}
+
+
+function prepare_data_volume()
+{
+ local display_name=$( jq -r '.displayname' ${DATA_CONTAINER_METADATA} )
+
+ echo "+ prepare data container $display_name"
+ local build_context_method=$( jq -r '.build_context_method' ${DATA_CONTAINER_METADATA} )
+ local image_file_size=$( jq -r '.filesize' ${DATA_CONTAINER_METADATA} )
+ if [[ "$build_context_method" == "0" ]]; then
+ writelog "+ container_build_context: dockerfile"
+ CONTAINER_IMAGE_BUILD_CONTEXT="$DATA_CONTAINER_DIR"
+ CONTAINER_IMAGE_TAG="$(echo ${display_name} | tr -dc '[:alnum:]' | tr '[:upper:]' '[:lower:]')"
+ DATA_CONTAINER_IMAGE_NAME=$CONTAINER_IMAGE_TAG
+ build_container_image
+ retval=$?
+ elif [[ "$build_context_method" == "1" ]]; then
+ writelog "+ container_build_context: git url"
+ CONTAINER_IMAGE_BUILD_CONTEXT=$( jq -r '.build_context_url' ${DATA_CONTAINER_METADATA} )
+ CONTAINER_IMAGE_TAG="$(echo ${display_name} | tr -dc '[:alnum:]' | tr '[:upper:]' '[:lower:]')"
+ DATA_CONTAINER_IMAGE_NAME=$CONTAINER_IMAGE_TAG
+ build_container_image
+ retval=$?
+ elif [[ "$build_context_method" == "2" ]]; then
+ writelog "+ pull data container"
+ DATA_CONTAINER_REPO=$( jq -r '.image_repo' ${DATA_CONTAINER_METADATA} )
+ DATA_CONTAINER_IMAGE_NAME="$DATA_CONTAINER_REPO"
+ docker pull "$DATA_CONTAINER_REPO"
+ retval=$?
+ elif [[ "$build_context_method" == "3" ]]; then
+ CONTAINER_IMAGE_TAG="$(echo ${display_name} | tr -dc '[:alnum:]' | tr '[:upper:]' '[:lower:]')"
+ DATA_CONTAINER_IMAGE_NAME=$CONTAINER_IMAGE_TAG
+ BWLP_IMAGE_PATH=$( jq -r '.imagepath' ${DATA_CONTAINER_METADATA})
+ prepare_dnbd3_mount && load_container_image
+ retval=$?
+ else
+ writelog "+ no proper build_context_method (=$build_context_method)"
+ return 1
+ fi
+
+ ## create the volume
+ if [[ $retval == 0 ]]; then
+ VOLUME_NAME="volume_$(echo ${display_name} | tr -dc '[:alnum:]' | tr '[:upper:]' '[:lower:]')"
+ echo "+ create volume VOLUME_NAME=$VOLUME_NAME"
+ docker volume create $VOLUME_NAME
+
+ # TODO assumption: every data container stores data at /data/
+ writelog "+ populate volume with container data"
+ writelog "+ docker run -it --rm -v $VOLUME_NAME:/data/ $DATA_CONTAINER_IMAGE_NAME"
+ docker run -itd --rm -v $VOLUME_NAME:/data/ $DATA_CONTAINER_IMAGE_NAME
+
+ source $DATA_CONTAINER_MOUNT_INFO
+ CONTAINER_BIND_MOUNT_STRING+=" --mount type=volume,source=${VOLUME_NAME},target=$MOUNT_TARGET"
+ fi
+}
+
+function process_volume_mount_info()
+{
+ for DATA_CONTAINER_DIR in $VOLUME_MOUNT_INFO; do
+ echo $DATA_CONTAINER_DIR
+ DATA_CONTAINER_METADATA="${DATA_CONTAINER_DIR}/metadata"
+ DATA_CONTAINER_MOUNT_INFO="${DATA_CONTAINER_DIR}/mount_info"
+
+ prepare_data_volume
+ done
+}
+
+
main ()
{
- if [[ -n $CONTAINER_REPO_NAME ]]; then
+ if [[ -n "$VOLUME_MOUNT_INFO" ]]; then
+ echo "+ prepare volumes from data container"
+ process_volume_mount_info
+ fi
+
+ if [[ "$CONTAINER_IMAGE_CONTEXT" == "CONTAINER_REPO" ]]; then
echo "pull container $CONTAINER_REPO_NAME"
docker pull $CONTAINER_REPO_NAME
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop
index 87d418ea..8ed7a48c 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop
@@ -3,7 +3,7 @@ Version=1.0
Encoding=UTF-8
Name=docker-init
Type=Application
-Exec=
+Exec="/opt/openslx/vmchooser/plugins/docker/docker-init"
Icon=
Terminal=true
StartupNotify=true
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc
index ad82ef51..b3c9d660 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc
@@ -9,24 +9,46 @@
BIND_MOUNT_FILE="$CONFDIR/container_meta.json"
# TODO: Maybe make this an array to support spaces
BIND_MOUNT_STRING=""
+VOLUME_MOUNT_INFO=""
+function cleanup_container_mount()
+{
+ for directory in "$VOLUME_MOUNT_INFO"; do
+ umount "$directory/dnbd3.fuse"
+ find $directory -delete
+ done
+}
-BIND_MOUNT_COUNT="$( cat "$BIND_MOUNT_FILE" | jq '.bind_mount_config | length' )"
+function prepare_container_mount()
+{
+ local image_uuid="$BIND_MOUNT_SOURCE"
+ local openslx_config="/opt/openslx/config"
-for (( index=0; index < "$BIND_MOUNT_COUNT"; index++ )); do
+ local data_container_dir="${CONFDIR}/${image_uuid}"
+ local data_container_metadata="${data_container_dir}/metadata"
+ local data_container_mount_info="${data_container_dir}/mount_info"
+ mkdir -p "$data_container_dir"
- BIND_MOUNT_INFO="$( jq .bind_mount_config["$index"] "$BIND_MOUNT_FILE" )"
+ echo "MOUNT_TARGET=${BIND_MOUNT_TARGET}" > "${data_container_mount_info}"
+ echo "MOUNT_OPTION=${BIND_MOUNT_OPTION}" >> "${data_container_mount_info}"
- # expecting source to be a MOUNT_LETTER, wich must replaced with the directory
- BIND_MOUNT_SOURCE="$( jq -r .source <<< "$BIND_MOUNT_INFO" )"
- BIND_MOUNT_TARGET="$( jq -r .target <<< "$BIND_MOUNT_INFO" )"
- BIND_MOUNT_OPTION="$( jq -r .option <<< "$BIND_MOUNT_INFO" )"
+ # get SLX_PXE_SERVER_IP (sat ip)
+ source "$openslx_config"
+ curl --silent ${SLX_PXE_SERVER_IP}/vmchooser/lecture/${image_uuid}/imagemeta --output "$data_container_metadata"
- if [[ -z "$BIND_MOUNT_SOURCE" || -z "$BIND_MOUNT_TARGET" ]]; then
- writelog "+ no proper bind mount option provided!"
- continue
+ retval=$?
+ [ "$retval" != "0" ] && writelog "+ request for data container metadata not successful" && return $retval
+
+ if [[ -z "$VOLUME_MOUNT_INFO" ]]; then
+ VOLUME_MOUNT_INFO+="${data_container_dir}"
+ else
+ VOLUME_MOUNT_INFO+=" ${data_container_dir}"
fi
+}
+
+function prepare_default_mount()
+{
# USER_HOME is selected
if [[ "$BIND_MOUNT_SOURCE" == "USER_HOME" ]]; then
if [[ -d "$HOME/PERSISTENT" ]]; then
@@ -40,7 +62,7 @@ for (( index=0; index < "$BIND_MOUNT_COUNT"; index++ )); do
elif [[ "$BIND_MOUNT_SOURCE" == "USER_TMP" ]]; then
# DOCKER_TMP created and cleand in opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh
DOCKER_TMP="/tmp/docker"
- DOCKER_USER_TMP="$DOCKER_TMP/$(id -u)"
+ DOCKER_USER_TMP="$DOCKER_TMP/$(id -un)"
[ ! -e $DOCKER_USER_TMP ] && mkdir -p $DOCKER_USER_TMP && chmod 0700 $DOCKER_USER_TMP
BIND_MOUNT_STRING+=" --mount type=bind,source=$DOCKER_USER_TMP,target=$BIND_MOUNT_TARGET"
@@ -48,10 +70,48 @@ for (( index=0; index < "$BIND_MOUNT_COUNT"; index++ )); do
writelog "+ no bind mount mapping for letter $BIND_MOUNT_SOURCE found!"
continue
else
- BIND_MOUNT_STRING+=" --mount type=bind,\\\"source=${NETSHARE_DIR[$BIND_MOUNT_SOURCE]}\\\",target=$BIND_MOUNT_TARGET"
+ BIND_MOUNT_STRING+=" --mount type=bind,\\\"source=${NETSHARE_DIR[$BIND_MOUNT_SOURCE]}\\\",target=$BIND_MOUN T_TARGET"
+ fi
+}
+
+BIND_MOUNT_COUNT="$( cat "$BIND_MOUNT_FILE" | jq '.bind_mount_config | length' )"
+
+for (( index=0; index < "$BIND_MOUNT_COUNT"; index++ )); do
+
+ BIND_MOUNT_INFO="$( jq .bind_mount_config["$index"] "$BIND_MOUNT_FILE" )"
+
+ # expecting source to be a MOUNT_LETTER, wich must replaced with the directory
+ MOUNT_TYPE="$( jq -r .mount_type <<< "$BIND_MOUNT_INFO" )"
+ BIND_MOUNT_SOURCE="$( jq -r .source <<< "$BIND_MOUNT_INFO" )"
+ BIND_MOUNT_TARGET="$( jq -r .target <<< "$BIND_MOUNT_INFO" )"
+ BIND_MOUNT_OPTION="$( jq -r .options <<< "$BIND_MOUNT_INFO" )"
+
+
+ if [[ -z "$BIND_MOUNT_SOURCE" || -z "$BIND_MOUNT_TARGET" ]]; then
+ writelog "+ no proper bind mount option provided!"
+ continue
fi
+ if [[ -z "$MOUNT_TYPE" || "$MOUNT_TYPE" == "DEFAULT" ]]; then
+ writelog "+ prepare bind mount option with SOURCE=$BIND_MOUNT_SOURCE (label) and target=$BIND_MOUNT_TARGET"
+ prepare_default_mount
+ continue
+ elif [[ "$MOUNT_TYPE" == "CONTAINER_IMAGE" ]]; then
+ writelog "+ prepare docker volume"
+ prepare_container_mount
+ fi
+
+ if [[ -n "$VOLUME_MOUNT_INFO" ]]; then
+ add_cleanup cleanup_gio_mount
+ fi
done
-writelog "+ write final CONTAINER_BIND_MOUNT_STRING $BIND_MOUNT_STRING in config $USER_CONTAINER_CONFIG"
-echo "CONTAINER_BIND_MOUNT_STRING=\"${BIND_MOUNT_STRING}\"" >> ${USER_CONTAINER_CONFIG}
+if [[ -n "${BIND_MOUNT_STRING}" ]]; then
+ writelog "+ write final CONTAINER_BIND_MOUNT_STRING ${BIND_MOUNT_STRING} in config ${USER_CONTAINER_CONFIG}"
+ echo "CONTAINER_BIND_MOUNT_STRING=\"${BIND_MOUNT_STRING}\"" >> ${USER_CONTAINER_CONFIG}
+fi
+
+if [[ -n "${VOLUME_MOUNT_INFO}" ]]; then
+ writelog "+ write VOLUME_MOUNT_INFO=${VOLUME_MOUNT_INFO} in config"
+ echo "VOLUME_MOUNT_INFO=\"${VOLUME_MOUNT_INFO}\"" >> ${USER_CONTAINER_CONFIG}
+fi
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
index 4751880a..75816cb4 100644
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
@@ -15,13 +15,19 @@ function process_container_meta()
build_context_method=$( jq -r '.build_context_method' "$CONFDIR/container_meta.json" )
if [[ "$build_context_method" == "0" ]]; then
writelog "+ container_build_context: dockerfile"
+ export CONTAINER_IMAGE_CONTEXT="DOCKERFILE"
export CONTAINER_BUILD_CONTEXT="$CONFDIR/"
elif [[ "$build_context_method" == "1" ]]; then
writelog "+ container_build_context: git url"
+ export CONTAINER_IMAGE_CONTEXT="GIT_REPO"
export CONTAINER_BUILD_CONTEXT=$( jq -r '.build_context_url' "$CONFDIR/container_meta.json" )
elif [[ "$build_context_method" == "2" ]]; then
writelog "+ pull public container"
+ export CONTAINER_IMAGE_CONTEXT="CONTAINER_REPO"
export CONTAINER_REPO_NAME=$( jq -r '.image_repo' "$CONFDIR/container_meta.json" )
+ elif [[ "$build_context_method" == "3" ]]; then
+ writelog "+ load docker archive"
+ export CONTAINER_IMAGE_CONTEXT="DOCKER_ARCHIVE"
else
writelog "+ no proper build_context_method!"
cleanexit 1
@@ -33,10 +39,8 @@ function setup_user_container_context()
{
mkdir -p "$USER_CONTAINER_CONTEXT"
# init user directory with scripts
- cp "$DOCKER_PLUGIN_DIR/docker-init" "$USER_CONTAINER_CONTEXT/"
cp "$DOCKER_PLUGIN_DIR/remount" "$USER_CONTAINER_CONTEXT/"
cp "$DOCKER_PLUGIN_DIR/.bwlp-user-conf" "$USER_CONTAINER_CONFIG"
- chmod u+x "$USER_CONTAINER_CONTEXT/docker-init"
chmod u+x "$USER_CONTAINER_CONTEXT/remount"
}
@@ -46,7 +50,6 @@ function setup_user_container_autostart()
# TODO: maybe there is a better way to load and start the container which is used in the current lecture
mkdir -p "$HOME/.config/autostart/"
cp -f "$DOCKER_PLUGIN_DIR/docker-init.desktop" "$HOME/.config/autostart/"
- sed -i "s:Exec=:Exec=$USER_CONTAINER_CONTEXT/docker-init:" "$HOME/.config/autostart/docker-init.desktop"
}
@@ -60,25 +63,38 @@ function init_user_container_config()
process_container_meta
writelog "+ init USER_CONTAINER_CONFIG: $USER_CONTAINER_CONFIG"
- sed -i "s#export DOCKER_PLUGIN_DIR=".*"#export DOCKER_PLUGIN_DIR=\"$DOCKER_PLUGIN_DIR\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export DOCKER_INCLUDE_DIR=".*"#export DOCKER_INCLUDE_DIR=\"$DOCKER_INCLUDE_DIR\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export TMPDIR=".*"#export TMPDIR=\"$TMPDIR\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export VM_DISKFILE_RO=".*"#export VM_DISKFILE_RO=\"$VM_DISKFILE_RO\"#" "$USER_CONTAINER_CONFIG"
+ echo "export DOCKER_PLUGIN_DIR=\"$DOCKER_PLUGIN_DIR\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export DOCKER_INCLUDE_DIR=\"$DOCKER_INCLUDE_DIR\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export TMPDIR=\"$TMPDIR\"" >> "$USER_CONTAINER_CONFIG"
- sed -i "s#export CONTAINER_REPO_NAME=".*"#export CONTAINER_REPO_NAME=\"$CONTAINER_REPO_NAME\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export CONTAINER_BUILD_CONTEXT=".*"#export CONTAINER_BUILD_CONTEXT=\"$CONTAINER_BUILD_CONTEXT\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export CONTAINER_IMAGE_NAME=".*"#export CONTAINER_IMAGE_NAME=\"$CONTAINER_IMAGE_NAME\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export CONTAINER_RUN_OPTIONS=".*"#export CONTAINER_RUN_OPTIONS=\"$CONTAINER_RUN_OPTIONS\"#" "$USER_CONTAINER_CONFIG"
- sed -i "s#export CONTAINER_RUN_COMMAND=".*"#export CONTAINER_RUN_COMMAND=\"$CONTAINER_RUN_COMMAND\"#" "$USER_CONTAINER_CONFIG"
+ echo "export VM_DISKFILE_RO=\"$VM_DISKFILE_RO\"" >> "$USER_CONTAINER_CONFIG"
+
+ echo "export CONTAINER_REPO_NAME=\"$CONTAINER_REPO_NAME\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export CONTAINER_BUILD_CONTEXT=\"$CONTAINER_BUILD_CONTEXT\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export CONTAINER_IMAGE_NAME=\"$CONTAINER_IMAGE_NAME\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export CONTAINER_RUN_OPTIONS=\"$CONTAINER_RUN_OPTIONS\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export CONTAINER_RUN_COMMAND=\"$CONTAINER_RUN_COMMAND\"" >> "$USER_CONTAINER_CONFIG"
+ echo "export CONTAINER_IMAGE_CONTEXT=\"$CONTAINER_IMAGE_CONTEXT\"" >> "$USER_CONTAINER_CONFIG"
+
+ # sed -i "s#export DOCKER_PLUGIN_DIR=".*"#export DOCKER_PLUGIN_DIR=\"$DOCKER_PLUGIN_DIR\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export DOCKER_INCLUDE_DIR=".*"#export DOCKER_INCLUDE_DIR=\"$DOCKER_INCLUDE_DIR\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export TMPDIR=".*"#export TMPDIR=\"$TMPDIR\"#" "$USER_CONTAINER_CONFIG"
+
+ # sed -i "s#export VM_DISKFILE_RO=".*"#export VM_DISKFILE_RO=\"$VM_DISKFILE_RO\"#" "$USER_CONTAINER_CONFIG"
+
+ # sed -i "s#export CONTAINER_REPO_NAME=".*"#export CONTAINER_REPO_NAME=\"$CONTAINER_REPO_NAME\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export CONTAINER_BUILD_CONTEXT=".*"#export CONTAINER_BUILD_CONTEXT=\"$CONTAINER_BUILD_CONTEXT\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export CONTAINER_IMAGE_NAME=".*"#export CONTAINER_IMAGE_NAME=\"$CONTAINER_IMAGE_NAME\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export CONTAINER_RUN_OPTIONS=".*"#export CONTAINER_RUN_OPTIONS=\"$CONTAINER_RUN_OPTIONS\"#" "$USER_CONTAINER_CONFIG"
+ # sed -i "s#export CONTAINER_RUN_COMMAND=".*"#export CONTAINER_RUN_COMMAND=\"$CONTAINER_RUN_COMMAND\"#" "$USER_CONTAINER_CONFIG"
local RUNSCRIPT="$CONFDIR/runscript"
# check if runscript file contains more than default line "ext=;visibility=1;soundMuted=-1"
if [[ "$( < "$RUNSCRIPT" wc -l )" -gt "1" ]]; then
- sed -i "s#export RUNSCRIPT=".*"#export RUNSCRIPT=\"$RUNSCRIPT\"#" "$USER_CONTAINER_CONFIG"
+ echo "export RUNSCRIPT=\"$RUNSCRIPT\"" >> "$USER_CONTAINER_CONFIG"
+ #sed -i "s#export RUNSCRIPT=".*"#export RUNSCRIPT=\"$RUNSCRIPT\"#" "$USER_CONTAINER_CONFIG"
fi
-
- sed -i "s#USER_CONTAINER_CONFIG=".*"#USER_CONTAINER_CONFIG=\"$USER_CONTAINER_CONFIG\"#" "$USER_CONTAINER_CONTEXT/docker-init"
}