Add base element for using docker as image base

Docker can export root filesystems, which is what we want out of root
elements. Make a very simple passthrough element that will grab a docker
image and export it into a root filesystem.

Change-Id: Ie1e2d5dd5a61558f100e02c953b18d697a8fe8a2
This commit is contained in:
Monty Taylor 2015-06-07 19:09:56 -04:00 committed by greghaynes
parent 1187f9d5df
commit 4bddca2573
5 changed files with 85 additions and 0 deletions

View File

@ -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.

View File

@ -0,0 +1 @@
dib-run-parts

View File

@ -0,0 +1 @@
operating-system

View File

@ -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

View File

@ -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