From 3123b44774fb3120da72f1bb4c945674a4a8361e Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 17 Jan 2014 08:46:11 -0500 Subject: [PATCH 1/2] Added new mkimage-yum.sh script to create CentOS base images mkimage-rinse.sh requires rinse, which is not readily available on CentOS or Fedora. Plus, creating a base image is trivial with yum alone. Docker-DCO-1.1-Signed-off-by: Chris St. Pierre (github: stpierre) Upstream-commit: d419da7227826e84e9375ece4fd9d4978a42cbf7 Component: engine --- components/engine/contrib/mkimage-rinse.sh | 7 ++ components/engine/contrib/mkimage-yum.sh | 90 +++++++++++++++++++ .../docs/sources/articles/baseimages.rst | 5 +- 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100755 components/engine/contrib/mkimage-yum.sh diff --git a/components/engine/contrib/mkimage-rinse.sh b/components/engine/contrib/mkimage-rinse.sh index de9265d48c..dfe9999d92 100755 --- a/components/engine/contrib/mkimage-rinse.sh +++ b/components/engine/contrib/mkimage-rinse.sh @@ -1,4 +1,11 @@ #!/usr/bin/env bash +# +# Create a base CentOS Docker image. + +# This script is useful on systems with rinse available (e.g., +# building a CentOS image on Debian). See contrib/mkimage-yum.sh for +# a way to build CentOS images on systems with yum installed. + set -e repo="$1" diff --git a/components/engine/contrib/mkimage-yum.sh b/components/engine/contrib/mkimage-yum.sh new file mode 100755 index 0000000000..594eb96fec --- /dev/null +++ b/components/engine/contrib/mkimage-yum.sh @@ -0,0 +1,90 @@ +#!/bin/bash +# +# Create a base CentOS Docker image. +# +# This script is useful on systems with yum installed (e.g., building +# a CentOS image on CentOS). See contrib/mkimage-rinse.sh for a way +# to build CentOS images on other systems. + +usage() { + cat < +OPTIONS: + -y The path to the yum config to install packages from. The + default is /etc/yum.conf. +EOOPTS + exit 1 +} + +# option defaults +yum_config=/etc/yum.conf +while getopts ":y:h" opt; do + case $opt in + y) + yum_config=$OPTARG + ;; + h) + usage + ;; + \?) + echo "Invalid option: -$OPTARG" + usage + ;; + esac +done +shift $((OPTIND - 1)) +name=$1 + +if [[ -z $name ]]; then + usage +fi + +#-------------------- + +target=$(mktemp -d --tmpdir $(basename $0).XXXXXX) + +set -x + +for dev in console null zero urandom; do + /sbin/MAKEDEV -d "$target"/dev -x $dev +done + +yum -c "$yum_config" --installroot="$target" --setopt=tsflags=nodocs \ + --setopt=group_package_types=mandatory -y groupinstall Core +yum -c "$yum_config" --installroot="$mount" -y clean all + +cat > "$target"/etc/sysconfig/network <&2 "warning: cannot autodetect OS version, using '$name' as tag" + version=$name +fi + +tar --numeric-owner -c -C "$target" . | docker import - $name:$version +docker run -i -t $name:$version echo success + +rm -rf "$target" diff --git a/components/engine/docs/sources/articles/baseimages.rst b/components/engine/docs/sources/articles/baseimages.rst index 51a51e2f93..0523434e0b 100644 --- a/components/engine/docs/sources/articles/baseimages.rst +++ b/components/engine/docs/sources/articles/baseimages.rst @@ -37,7 +37,10 @@ There are more example scripts for creating base images in the Docker Github Repo: * `BusyBox `_ -* `CentOS / Scientific Linux CERN (SLC) +* CentOS / Scientific Linux CERN (SLC) `on Debian/Ubuntu `_ + or + `on CentOS/RHEL/SLC/etc. + `_ * `Debian / Ubuntu `_ From b1ef6f3d68f860277782afdafc7c154053ca1876 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 23 Jan 2014 12:01:21 -0500 Subject: [PATCH 2/2] fix shebang in mkimage-yum.sh Docker-DCO-1.1-Signed-off-by: Chris St. Pierre (github: stpierre) Upstream-commit: fd2403b8303f7ea9152dd08021d2c9c7070aefb4 Component: engine --- components/engine/contrib/mkimage-yum.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/engine/contrib/mkimage-yum.sh b/components/engine/contrib/mkimage-yum.sh index 594eb96fec..54e99f1f04 100755 --- a/components/engine/contrib/mkimage-yum.sh +++ b/components/engine/contrib/mkimage-yum.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Create a base CentOS Docker image. #