mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 09:39:08 +00:00
Replace mkinitrd.sh with a tool to convert base image to initrd
Better split between content and tools. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
parent
2e39ad92e2
commit
9fe9e95349
@ -1,7 +1,5 @@
|
|||||||
FROM mobylinux/alpine-base:5837a236153f00bb215642e3e0639252eb49cdf9@sha256:f6f12aebe2af07c9250014ff283485dbdf082bd9cfbd74aad27a3d2dcf13e0b1
|
FROM mobylinux/alpine-base:5837a236153f00bb215642e3e0639252eb49cdf9@sha256:f6f12aebe2af07c9250014ff283485dbdf082bd9cfbd74aad27a3d2dcf13e0b1
|
||||||
|
|
||||||
ENV ARCH=x86_64
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
addgroup -g 50 docker && \
|
addgroup -g 50 docker && \
|
||||||
adduser -G docker -u 1001 -s /bin/sh -D -g "Docker" docker && \
|
adduser -G docker -u 1001 -s /bin/sh -D -g "Docker" docker && \
|
||||||
@ -9,7 +7,6 @@ RUN \
|
|||||||
adduser -D -H -s /sbin/nologin dockremap
|
adduser -D -H -s /sbin/nologin dockremap
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN rm Dockerfile
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
rc-update add sysctl boot && \
|
rc-update add sysctl boot && \
|
||||||
@ -59,5 +56,3 @@ RUN \
|
|||||||
rc-update add gcp-hostname default && \
|
rc-update add gcp-hostname default && \
|
||||||
rc-update add gcp-startup default && \
|
rc-update add gcp-startup default && \
|
||||||
true
|
true
|
||||||
|
|
||||||
CMD ["/mkinitrd.sh"]
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
all: initrd.img initrd-test.img mobylinux-efi.iso mobylinux-bios.iso
|
all: initrd.img initrd-test.img mobylinux-efi.iso mobylinux-bios.iso
|
||||||
|
|
||||||
ETCFILES=$(shell find etc)
|
|
||||||
|
|
||||||
TAG=$(shell git rev-parse HEAD)
|
TAG=$(shell git rev-parse HEAD)
|
||||||
STATUS=$(shell git status -s)
|
STATUS=$(shell git status -s)
|
||||||
ifeq ($(STATUS),)
|
ifeq ($(STATUS),)
|
||||||
@ -25,11 +23,12 @@ TARTAR2INITRD_IMAGE=mobylinux/tartar2initrd:d56cde1558e3080e59a32e3cd7c7141baa60
|
|||||||
|
|
||||||
GCE_IMAGE=mobylinux/mkimage-gce:83158ebe303a970a3131c3d02ef2ba00ca5e4a14@sha256:51c30fbf946ca9967688a411e7bf69769a22987cd47ad03428491dd1556fcf63
|
GCE_IMAGE=mobylinux/mkimage-gce:83158ebe303a970a3131c3d02ef2ba00ca5e4a14@sha256:51c30fbf946ca9967688a411e7bf69769a22987cd47ad03428491dd1556fcf63
|
||||||
|
|
||||||
moby.img: Dockerfile mkinitrd.sh init $(ETCFILES)
|
MKIMAGE_BASE=mobylinux/mkimage-base:870f7512498f2ce5feccebe15fb0d03c5c3ebac2@sha256:47d1ed872b6a44f13b61ea80b3eeab4519dc151c7d684a89a53aa26233b4e087
|
||||||
|
|
||||||
|
moby.img: Dockerfile etc usr init
|
||||||
$(MAKE) -j -C packages
|
$(MAKE) -j -C packages
|
||||||
printf $(TAG)$(DIRTY) > etc/moby-commit
|
printf $(TAG)$(DIRTY) > etc/moby-commit
|
||||||
BUILD=$$( tar cf - \
|
BUILD=$$( tar cf - $^ \
|
||||||
Dockerfile etc usr init mkinitrd.sh \
|
|
||||||
-C packages/proxy usr sbin etc -C ../.. \
|
-C packages/proxy usr sbin etc -C ../.. \
|
||||||
-C packages/transfused sbin etc -C ../.. \
|
-C packages/transfused sbin etc -C ../.. \
|
||||||
-C packages/tap-vsockd sbin etc -C ../.. \
|
-C packages/tap-vsockd sbin etc -C ../.. \
|
||||||
@ -55,8 +54,8 @@ moby.img: Dockerfile mkinitrd.sh init $(ETCFILES)
|
|||||||
| \
|
| \
|
||||||
docker build -q - ) && [ -n "$$BUILD" ] && echo "Built $$BUILD" && \
|
docker build -q - ) && [ -n "$$BUILD" ] && echo "Built $$BUILD" && \
|
||||||
echo $$BUILD > mobylinux.tag && \
|
echo $$BUILD > mobylinux.tag && \
|
||||||
docker run --rm --read-only --net=none --log-driver=none --tmpfs /tmp --tmpfs /initrd $$BUILD | \
|
docker run --rm --read-only --net=none --log-driver=none --tmpfs /tmp -v /var/run/docker.sock:/var/run/docker.sock $(MKIMAGE_BASE) $$BUILD | \
|
||||||
docker run --rm --read-only --net=none --log-driver=none --tmpfs /tmp -i $(PAD4_IMAGE) > $@
|
docker run --rm --read-only --net=none --log-driver=none --tmpfs /tmp -i $(TAR2INITRD_IMAGE) > $@
|
||||||
|
|
||||||
container.img:
|
container.img:
|
||||||
$(MAKE) -j -C containers
|
$(MAKE) -j -C containers
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
rm -rf /tmp/*
|
|
||||||
|
|
||||||
for f in $(ls | grep -vE 'dev|sys|proc|tmp|export|mnt')
|
|
||||||
do
|
|
||||||
cp -a $f /tmp
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -m 555 /tmp/dev /tmp/proc /tmp/sys /tmp/mnt
|
|
||||||
mkdir -m 1777 /tmp/tmp
|
|
||||||
|
|
||||||
# these three files are bind mounted in by docker so they are not what we want
|
|
||||||
|
|
||||||
cat << EOF > /tmp/etc/hosts
|
|
||||||
127.0.0.1 localhost
|
|
||||||
::1 localhost ip6-localhost ip6-loopback
|
|
||||||
fe00::0 ip6-localnet
|
|
||||||
ff00::0 ip6-mcastprefix
|
|
||||||
ff02::1 ip6-allnodes
|
|
||||||
ff02::2 ip6-allrouters
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF > /tmp/etc/resolv.conf
|
|
||||||
nameserver 8.8.8.8
|
|
||||||
nameserver 8.8.4.4
|
|
||||||
nameserver 2001:4860:4860::8888
|
|
||||||
nameserver 2001:4860:4860::8844
|
|
||||||
EOF
|
|
||||||
|
|
||||||
printf 'moby' > /tmp/etc/hostname
|
|
||||||
|
|
||||||
cd /tmp
|
|
||||||
|
|
||||||
rm mkinitrd.sh
|
|
||||||
|
|
||||||
find . | cpio -H newc -o | gzip -9
|
|
12
tools/mkimage-base/Dockerfile
Normal file
12
tools/mkimage-base/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
FROM alpine:3.5
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
apk update && apk upgrade && \
|
||||||
|
apk add \
|
||||||
|
docker \
|
||||||
|
tar \
|
||||||
|
&& true
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
ENTRYPOINT ["/mkimage.sh"]
|
29
tools/mkimage-base/Makefile
Normal file
29
tools/mkimage-base/Makefile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.PHONY: tag push
|
||||||
|
|
||||||
|
BASE=alpine:3.5
|
||||||
|
IMAGE=mkimage-base
|
||||||
|
|
||||||
|
default: push
|
||||||
|
|
||||||
|
hash: Dockerfile mkimage.sh
|
||||||
|
DOCKER_CONTENT_TRUST=1 docker pull $(BASE)
|
||||||
|
tar cf - $^ | docker build --no-cache -t $(IMAGE):build -
|
||||||
|
docker run --entrypoint=/bin/sh --rm $(IMAGE):build -c "cat $^ /lib/apk/db/installed | sha1sum" | sed 's/ .*//' > $@
|
||||||
|
|
||||||
|
push: hash
|
||||||
|
docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
|
||||||
|
(docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash) && \
|
||||||
|
docker push mobylinux/$(IMAGE):$(shell cat hash))
|
||||||
|
docker rmi $(IMAGE):build
|
||||||
|
rm -f hash
|
||||||
|
|
||||||
|
tag: hash
|
||||||
|
docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
|
||||||
|
docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash)
|
||||||
|
docker rmi $(IMAGE):build
|
||||||
|
rm -f hash
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f hash
|
||||||
|
|
||||||
|
.DELETE_ON_ERROR:
|
46
tools/mkimage-base/mkimage.sh
Executable file
46
tools/mkimage-base/mkimage.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# arguments are image name
|
||||||
|
# This script will output a tarball, suitable to be turned into a cpio archive
|
||||||
|
# This is a bit hacky, should be improved later, as it hardcodes config.
|
||||||
|
|
||||||
|
IMAGE="$1"; shift
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
|
||||||
|
# extract rootfs
|
||||||
|
EXCLUDE="--exclude .dockerenv --exclude Dockerfile \
|
||||||
|
--exclude dev/console --exclude dev/pts --exclude dev/shm \
|
||||||
|
--exclude etc/hostname --exclude etc/hosts --exclude etc/mtab --exclude etc/resolv.conf"
|
||||||
|
|
||||||
|
CONTAINER="$(docker create $IMAGE /dev/null)"
|
||||||
|
docker export "$CONTAINER" | tar -xf - $EXCLUDE
|
||||||
|
docker rm "$CONTAINER" > /dev/null
|
||||||
|
|
||||||
|
# these three files are bind mounted in by docker so they are not what we want
|
||||||
|
|
||||||
|
mkdir -p etc
|
||||||
|
|
||||||
|
cat << EOF > etc/hosts
|
||||||
|
127.0.0.1 localhost
|
||||||
|
::1 localhost ip6-localhost ip6-loopback
|
||||||
|
fe00::0 ip6-localnet
|
||||||
|
ff00::0 ip6-mcastprefix
|
||||||
|
ff02::1 ip6-allnodes
|
||||||
|
ff02::2 ip6-allrouters
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF > etc/resolv.conf
|
||||||
|
nameserver 8.8.8.8
|
||||||
|
nameserver 8.8.4.4
|
||||||
|
nameserver 2001:4860:4860::8888
|
||||||
|
nameserver 2001:4860:4860::8844
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf 'moby' > etc/hostname
|
||||||
|
|
||||||
|
ln -s /proc/mounts etc/mtab
|
||||||
|
|
||||||
|
tar cf - .
|
Loading…
Reference in New Issue
Block a user