mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	contrib: mkimage script for alpine linux
Docker-DCO-1.1-Signed-off-by: Eivind Uggedal <eivind@uggedal.com> (github: uggedal)
This commit is contained in:
		
							parent
							
								
									370b935b49
								
							
						
					
					
						commit
						6a2bdc6eb7
					
				
					 1 changed files with 82 additions and 0 deletions
				
			
		
							
								
								
									
										82
									
								
								contrib/mkimage-alpine.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										82
									
								
								contrib/mkimage-alpine.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,82 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ $(id -u) -eq 0 ] || {
 | 
				
			||||||
 | 
						printf >&2 '%s requires root\n' "$0"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
						printf >&2 '%s: [-r release] [-m mirror] [-s]\n' "$0"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tmp() {
 | 
				
			||||||
 | 
						TMP=$(mktemp -d /tmp/alpine-docker-XXXXXXXXXX)
 | 
				
			||||||
 | 
						ROOTFS=$(mktemp -d /tmp/alpine-docker-rootfs-XXXXXXXXXX)
 | 
				
			||||||
 | 
						trap "rm -rf $TMP $ROOTFS" EXIT TERM INT
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					apkv() {
 | 
				
			||||||
 | 
						curl -s $REPO/$ARCH/APKINDEX.tar.gz | tar -Oxz |
 | 
				
			||||||
 | 
							grep '^P:apk-tools-static$' -A1 | tail -n1 | cut -d: -f2
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					getapk() {
 | 
				
			||||||
 | 
						curl -s $REPO/$ARCH/apk-tools-static-$(apkv).apk |
 | 
				
			||||||
 | 
							tar -xz -C $TMP sbin/apk.static
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkbase() {
 | 
				
			||||||
 | 
						$TMP/sbin/apk.static --repository $REPO --update-cache --allow-untrusted \
 | 
				
			||||||
 | 
							--root $ROOTFS --initdb add alpine-base
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					conf() {
 | 
				
			||||||
 | 
						printf '%s\n' $REPO > $ROOTFS/etc/apk/repositories
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pack() {
 | 
				
			||||||
 | 
						local id
 | 
				
			||||||
 | 
						id=$(tar --numeric-owner -C $ROOTFS -c . | docker import - alpine:$REL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						docker tag $id alpine:latest
 | 
				
			||||||
 | 
						docker run -i -t alpine printf 'alpine:%s with id=%s created!\n' $REL $id
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					save() {
 | 
				
			||||||
 | 
						[ $SAVE -eq 1 ] || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tar --numeric-owner -C $ROOTFS -c . | xz > rootfs.tar.xz
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while getopts "hr:m:s" opt; do
 | 
				
			||||||
 | 
						case $opt in
 | 
				
			||||||
 | 
							r)
 | 
				
			||||||
 | 
								REL=$OPTARG
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							m)
 | 
				
			||||||
 | 
								MIRROR=$OPTARG
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							s)
 | 
				
			||||||
 | 
								SAVE=1
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							*)
 | 
				
			||||||
 | 
								usage
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REL=${REL:-edge}
 | 
				
			||||||
 | 
					MIRROR=${MIRROR:-http://nl.alpinelinux.org/alpine}
 | 
				
			||||||
 | 
					SAVE=${SAVE:-0}
 | 
				
			||||||
 | 
					REPO=$MIRROR/$REL/main
 | 
				
			||||||
 | 
					ARCH=$(uname -m)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tmp
 | 
				
			||||||
 | 
					getapk
 | 
				
			||||||
 | 
					mkbase
 | 
				
			||||||
 | 
					conf
 | 
				
			||||||
 | 
					pack
 | 
				
			||||||
 | 
					save
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue