diff --git a/elements/docker/README.rst b/elements/docker/README.rst new file mode 100644 index 00000000..af3e2f5d --- /dev/null +++ b/elements/docker/README.rst @@ -0,0 +1,15 @@ +====== +docker +====== + +Base element for creating images from docker containers. + +This element is incomplete by itself, you'll want to add additional elements, +such as dpkg or yum to get richer features. At its heart, this element simply +exports a root tarball from a named docker container so that other +diskimage-builder elements can build on top of it. + +The variables `DISTRO_NAME` and `DIB_RELEASE` will be used to decide which +docker image to pull, and are required for most other elements. Additionally, +the `DIB_DOCKER_IMAGE` environment variable can be set in addition to +`DISTRO_NAME` and `DIB_RELEASE` if a different docker image is desired. diff --git a/elements/docker/element-deps b/elements/docker/element-deps new file mode 100644 index 00000000..64b9ac34 --- /dev/null +++ b/elements/docker/element-deps @@ -0,0 +1 @@ +dib-run-parts diff --git a/elements/docker/element-provides b/elements/docker/element-provides new file mode 100644 index 00000000..a72e0496 --- /dev/null +++ b/elements/docker/element-provides @@ -0,0 +1 @@ +operating-system diff --git a/elements/docker/extra-data.d/01-docker-minimal b/elements/docker/extra-data.d/01-docker-minimal new file mode 100755 index 00000000..fb0462bd --- /dev/null +++ b/elements/docker/extra-data.d/01-docker-minimal @@ -0,0 +1,32 @@ +#!/bin/bash +# +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# This is not using install-packages because it's before install-packages can +# work - and is work needed to make it possible for it to work +if [ -x $TMP_MOUNT_PATH/usr/bin/apt-get ] ; then + sudo chroot $TMP_MOUNT_PATH apt-get update + sudo chroot $TMP_MOUNT_PATH apt-get -y install python +elif [ -x $TMP_MOUNT_PATH/bin/dnf ] ; then + sudo chroot $TMP_MOUNT_PATH dnf install -y findutils +elif [ -x $TMP_MOUNT_PATH/usr/bin/yum ] ; then + sudo chroot $TMP_MOUNT_PATH yum install -y findutils +fi diff --git a/elements/docker/root.d/08-docker b/elements/docker/root.d/08-docker new file mode 100755 index 00000000..78226859 --- /dev/null +++ b/elements/docker/root.d/08-docker @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +if [ -f ${TARGET_ROOT}/.extra_settings ] ; then + . ${TARGET_ROOT}/.extra_settings +fi + +[ -n "$DISTRO_NAME" ] +[ -n "$DIB_RELEASE" ] + +DIB_DOCKER_IMAGE=${DIB_DOCKER_IMAGE:-${DISTRO_NAME}:${DIB_RELEASE}} + +container=$(docker run -d $DIB_DOCKER_IMAGE /bin/sh) +docker export $container | sudo tar -C $TARGET_ROOT --numeric-owner -xf - +docker rm $container + +sudo rm -f ${TARGET_ROOT}/.extra_settings