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:
parent
1187f9d5df
commit
4bddca2573
15
elements/docker/README.rst
Normal file
15
elements/docker/README.rst
Normal 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.
|
1
elements/docker/element-deps
Normal file
1
elements/docker/element-deps
Normal file
@ -0,0 +1 @@
|
|||||||
|
dib-run-parts
|
1
elements/docker/element-provides
Normal file
1
elements/docker/element-provides
Normal file
@ -0,0 +1 @@
|
|||||||
|
operating-system
|
32
elements/docker/extra-data.d/01-docker-minimal
Executable file
32
elements/docker/extra-data.d/01-docker-minimal
Executable 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
|
36
elements/docker/root.d/08-docker
Executable file
36
elements/docker/root.d/08-docker
Executable 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
|
Loading…
Reference in New Issue
Block a user