mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/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
 | |
| 
 | |
| echo >&2
 | |
| echo >&2 'warning: this script is deprecated - see mkimage.sh and mkimage/rinse'
 | |
| echo >&2
 | |
| 
 | |
| repo="$1"
 | |
| distro="$2"
 | |
| mirror="$3"
 | |
| 
 | |
| if [ ! "$repo" ] || [ ! "$distro" ]; then
 | |
| 	self="$(basename $0)"
 | |
| 	echo >&2 "usage: $self repo distro [mirror]"
 | |
| 	echo >&2
 | |
| 	echo >&2 "   ie: $self username/centos centos-5"
 | |
| 	echo >&2 "       $self username/centos centos-6"
 | |
| 	echo >&2
 | |
| 	echo >&2 "   ie: $self username/slc slc-5"
 | |
| 	echo >&2 "       $self username/slc slc-6"
 | |
| 	echo >&2
 | |
| 	echo >&2 "   ie: $self username/centos centos-5 http://vault.centos.org/5.8/os/x86_64/CentOS/"
 | |
| 	echo >&2 "       $self username/centos centos-6 http://vault.centos.org/6.3/os/x86_64/Packages/"
 | |
| 	echo >&2
 | |
| 	echo >&2 'See /etc/rinse for supported values of "distro" and for examples of'
 | |
| 	echo >&2 '  expected values of "mirror".'
 | |
| 	echo >&2
 | |
| 	echo >&2 'This script is tested to work with the original upstream version of rinse,'
 | |
| 	echo >&2 '  found at http://www.steve.org.uk/Software/rinse/ and also in Debian at'
 | |
| 	echo >&2 '  http://packages.debian.org/wheezy/rinse -- as always, YMMV.'
 | |
| 	echo >&2
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| target="/tmp/docker-rootfs-rinse-$distro-$$-$RANDOM"
 | |
| 
 | |
| cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
 | |
| returnTo="$(pwd -P)"
 | |
| 
 | |
| rinseArgs=( --arch amd64 --distribution "$distro" --directory "$target" )
 | |
| if [ "$mirror" ]; then
 | |
| 	rinseArgs+=( --mirror "$mirror" )
 | |
| fi
 | |
| 
 | |
| set -x
 | |
| 
 | |
| mkdir -p "$target"
 | |
| 
 | |
| sudo rinse "${rinseArgs[@]}"
 | |
| 
 | |
| cd "$target"
 | |
| 
 | |
| # rinse fails a little at setting up /dev, so we'll just wipe it out and create our own
 | |
| sudo rm -rf dev
 | |
| sudo mkdir -m 755 dev
 | |
| (
 | |
| 	cd dev
 | |
| 	sudo ln -sf /proc/self/fd ./
 | |
| 	sudo mkdir -m 755 pts
 | |
| 	sudo mkdir -m 1777 shm
 | |
| 	sudo mknod -m 600 console c 5 1
 | |
| 	sudo mknod -m 600 initctl p
 | |
| 	sudo mknod -m 666 full c 1 7
 | |
| 	sudo mknod -m 666 null c 1 3
 | |
| 	sudo mknod -m 666 ptmx c 5 2
 | |
| 	sudo mknod -m 666 random c 1 8
 | |
| 	sudo mknod -m 666 tty c 5 0
 | |
| 	sudo mknod -m 666 tty0 c 4 0
 | |
| 	sudo mknod -m 666 urandom c 1 9
 | |
| 	sudo mknod -m 666 zero c 1 5
 | |
| )
 | |
| 
 | |
| # effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb --keep-services "$target"
 | |
| #  locales
 | |
| sudo rm -rf usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}
 | |
| #  docs
 | |
| sudo rm -rf usr/share/{man,doc,info,gnome/help}
 | |
| #  cracklib
 | |
| sudo rm -rf usr/share/cracklib
 | |
| #  i18n
 | |
| sudo rm -rf usr/share/i18n
 | |
| #  yum cache
 | |
| sudo rm -rf var/cache/yum
 | |
| sudo mkdir -p --mode=0755 var/cache/yum
 | |
| #  sln
 | |
| sudo rm -rf sbin/sln
 | |
| #  ldconfig
 | |
| #sudo rm -rf sbin/ldconfig
 | |
| sudo rm -rf etc/ld.so.cache var/cache/ldconfig
 | |
| sudo mkdir -p --mode=0755 var/cache/ldconfig
 | |
| 
 | |
| # allow networking init scripts inside the container to work without extra steps
 | |
| echo 'NETWORKING=yes' | sudo tee etc/sysconfig/network > /dev/null
 | |
| 
 | |
| # to restore locales later:
 | |
| #  yum reinstall glibc-common
 | |
| 
 | |
| version=
 | |
| if [ -r etc/redhat-release ]; then
 | |
| 	version="$(sed -E 's/^[^0-9.]*([0-9.]+).*$/\1/' etc/redhat-release)"
 | |
| elif [ -r etc/SuSE-release ]; then
 | |
| 	version="$(awk '/^VERSION/ { print $3 }' etc/SuSE-release)"
 | |
| fi
 | |
| 
 | |
| if [ -z "$version" ]; then
 | |
| 	echo >&2 "warning: cannot autodetect OS version, using $distro as tag"
 | |
| 	sleep 20
 | |
| 	version="$distro"
 | |
| fi
 | |
| 
 | |
| sudo tar --numeric-owner -c . | docker import - $repo:$version
 | |
| 
 | |
| docker run -i -t $repo:$version echo success
 | |
| 
 | |
| cd "$returnTo"
 | |
| sudo rm -rf "$target"
 |