Created
August 11, 2014 03:19
-
-
Save boscono/b8b87f1b12bf396ee8df to your computer and use it in GitHub Desktop.
mkimage-yum.sh - make CentOS docker image(.tar file) on CentOs using yum
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# copy from https://github.com/docker/docker/blob/master/contrib/mkimage-yum.sh | |
# modfiy not to remove locale and manuals | |
# | |
# 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 <<EOOPTS | |
$(basename $0) [OPTIONS] <name> | |
OPTIONS: | |
-y <yumconf> 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 | |
version= | |
if [ -r "$target"/etc/redhat-release ]; then | |
version="$(sed 's/^[^0-9\]*\([0-9.]\+\).*$/\1/' "$target"/etc/redhat-release)" | |
fi | |
if [[ -z $version ]]; then | |
echo "Can't detect version" | |
exit 1 | |
fi | |
#-------------------- | |
target=$(mktemp -d --tmpdir $(basename $0).XXXXXX) | |
set -x | |
mkdir -m 755 "$target"/dev | |
mknod -m 600 "$target"/dev/console c 5 1 | |
mknod -m 600 "$target"/dev/initctl p | |
mknod -m 666 "$target"/dev/full c 1 7 | |
mknod -m 666 "$target"/dev/null c 1 3 | |
mknod -m 666 "$target"/dev/ptmx c 5 2 | |
mknod -m 666 "$target"/dev/random c 1 8 | |
mknod -m 666 "$target"/dev/tty c 5 0 | |
mknod -m 666 "$target"/dev/tty0 c 4 0 | |
mknod -m 666 "$target"/dev/urandom c 1 9 | |
mknod -m 666 "$target"/dev/zero c 1 5 | |
yum -c "$yum_config" --installroot="$target" --releasever=$version \ | |
--setopt=group_package_types=mandatory -y groupinstall Core | |
yum -c "$yum_config" --installroot="$target" -y clean all | |
cat > "$target"/etc/sysconfig/network <<EOF | |
NETWORKING=yes | |
HOSTNAME=localhost.localdomain | |
EOF | |
# effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb | |
# --keep-services "$target". Stolen from mkimage-rinse.sh | |
# ldconfig | |
rm -rf "$target"/etc/ld.so.cache | |
rm -rf "$target"/var/cache/ldconfig/* | |
tar --numeric-owner -c -C "$target" -f ${name}.tar . | |
rm -rf "$target" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment