mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #2358 from tianon/mkimage-rinse
Remove mkimage-centos.sh in favor of a new rinse-based script...
This commit is contained in:
		
						commit
						584164177e
					
				
					 3 changed files with 115 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# Create a CentOS base image for Docker
 | 
			
		||||
# From unclejack https://github.com/dotcloud/docker/issues/290
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
MIRROR_URL="http://centos.netnitco.net/6.4/os/x86_64/"
 | 
			
		||||
MIRROR_URL_UPDATES="http://centos.netnitco.net/6.4/updates/x86_64/"
 | 
			
		||||
 | 
			
		||||
yum install -y febootstrap xz
 | 
			
		||||
 | 
			
		||||
febootstrap -i bash -i coreutils -i tar -i bzip2 -i gzip -i vim-minimal -i wget -i patch -i diffutils -i iproute -i yum centos centos64  $MIRROR_URL -u $MIRROR_URL_UPDATES
 | 
			
		||||
touch centos64/etc/resolv.conf
 | 
			
		||||
touch centos64/sbin/init
 | 
			
		||||
 | 
			
		||||
tar --numeric-owner -Jcpf centos-64.tar.xz -C centos64 .
 | 
			
		||||
							
								
								
									
										112
									
								
								contrib/mkimage-rinse.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										112
									
								
								contrib/mkimage-rinse.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,112 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ There are more example scripts for creating base images in the
 | 
			
		|||
Docker Github Repo:
 | 
			
		||||
 | 
			
		||||
* `BusyBox <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-busybox.sh>`_
 | 
			
		||||
* `CentOS
 | 
			
		||||
  <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-centos.sh>`_
 | 
			
		||||
* `Debian/Ubuntu
 | 
			
		||||
* `CentOS / Scientific Linux CERN (SLC)
 | 
			
		||||
  <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-rinse.sh>`_
 | 
			
		||||
* `Debian / Ubuntu
 | 
			
		||||
  <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-debootstrap.sh>`_
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue