Sign inSign up

fabiop85/ubuntu2004-lite-dind

By fabiop85

Updated almost 5 years ago

Image
1

2.3K

fabiop85/ubuntu2004-lite-dind repository overview

Ubuntu 20.04 DinD

start-restart.sh

#!/bin/bash

set -xv

DIND_IMG_NAME=fabiop85/ubuntu2004-lite-dind:base

DIND_NET_NAME=dind-network
DIND_SUBNET=172.0.0.0/24
DIND_GATEWAY=172.0.0.254

CNT_NAME=ubuntu2004-dind-lite
CNT_HOSTNAME=ubuntu
CNT_NETWORK=$DIND_NET_NAME
CNT_IP=172.0.0.1

CNT_DOCKER_VOL=docker01-vol
CNT_HOME_VOL=home01-vol
CNT_ROOT_VOL=root01-vol

mkdir -vp $(pwd)/rootfs/docker
mkdir -vp $(pwd)/rootfs/home
mkdir -vp $(pwd)/rootfs/root

docker stop $CNT_NAME
docker rm $CNT_NAME
docker network rm $DIND_NET_NAME
docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL

docker network create \
  --driver=bridge \
  --subnet=$DIND_SUBNET \
  --gateway=$DIND_GATEWAY \
  $DIND_NET_NAME

docker volume create --driver local \
      --opt type=none \
      --opt device=$(pwd)/rootfs/docker \
      --opt o=bind \
      $CNT_DOCKER_VOL

docker volume create --driver local \
      --opt type=none \
      --opt device=$(pwd)/rootfs/home \
      --opt o=bind \
      $CNT_HOME_VOL

docker volume create --driver local \
      --opt type=none \
      --opt device=$(pwd)/rootfs/root \
      --opt o=bind \
      $CNT_ROOT_VOL

docker run -dit \
    --name=$CNT_NAME \
    --hostname=$CNT_HOSTNAME \
    --network=$DIND_NET_NAME \
    --ip=$CNT_IP \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    -v /dev:/dev:ro \
    -v /lib/modules:/lib/modules:ro \
    -v /dev/fuse:/dev/fuse:rw \
    -v $CNT_DOCKER_VOL:/var/lib/docker \
    -v $CNT_HOME_VOL:/home/ubuntu \
    -v $CNT_ROOT_VOL:/root \
    --privileged \
    --security-opt apparmor:unconfined \
    --security-opt seccomp:unconfined \
    -p 2201:22 \
    $DIND_IMG_NAME

stop-clear.sh

#!/bin/bash

set -xv

DIND_NET_NAME=dind-network

CNT_NAME=ubuntu2004-dind-lite

CNT_DOCKER_VOL=docker01-vol
CNT_HOME_VOL=home01-vol
CNT_ROOT_VOL=root01-vol

docker stop $CNT_NAME
docker rm $CNT_NAME
docker network rm $DIND_NET_NAME
docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL

Menu complete script (runtime standard)

#!/bin/bash

# Utils functions

green='\e[32m'
blue='\e[34m'
clear='\e[0m'

ColorGreen(){
	echo -ne $green$1$clear
}
ColorBlue(){
	echo -ne $blue$1$clear
}

# Env for Dind
# ------------

DIND_IMG_NAME=fabiop85/ubuntu2004-lite-dind:base

DIND_NET_NAME=dind-network
DIND_SUBNET=172.0.0.0/24
DIND_GATEWAY=172.0.0.254

CNT_NAME=ubuntu2004-dind-lite
CNT_HOSTNAME=ubuntu
CNT_NETWORK=$DIND_NET_NAME
CNT_IP=172.0.0.1

CNT_DOCKER_VOL=docker01-vol
CNT_HOME_VOL=home01-vol
CNT_ROOT_VOL=root01-vol

# Env for commit
# --------------

# pip install docker-squash
# https://github.com/goldmann/docker-squash

# to modify
BS_IMG=fabiop85/ubuntu2004-lite-dind:base # After first commit this line can be commented
IMG=fabiop85/ubuntu2004-lite-dind:base-committed
CNT=ubuntu2004-dind-lite

# Functions

function start_restart() {
	mkdir -vp $(pwd)/rootfs/docker
	mkdir -vp $(pwd)/rootfs/home
	mkdir -vp $(pwd)/rootfs/root

	docker stop $CNT_NAME
	docker rm $CNT_NAME
	docker network rm $DIND_NET_NAME
	docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL

	docker network create \
		--driver=bridge \
		--subnet=$DIND_SUBNET \
		--gateway=$DIND_GATEWAY \
		$DIND_NET_NAME

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/docker \
			--opt o=bind \
			$CNT_DOCKER_VOL

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/home \
			--opt o=bind \
			$CNT_HOME_VOL

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/root \
			--opt o=bind \
			$CNT_ROOT_VOL

	docker run -dit \
		--name=$CNT_NAME \
		--hostname=$CNT_HOSTNAME \
		--network=$DIND_NET_NAME \
		--ip=$CNT_IP \
		-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
		-v /dev:/dev:ro \
		-v /lib/modules:/lib/modules:ro \
		-v /dev/fuse:/dev/fuse:rw \
		-v $CNT_DOCKER_VOL:/var/lib/docker \
		-v $CNT_HOME_VOL:/home/ubuntu \
		-v $CNT_ROOT_VOL:/root \
		--privileged \
		--security-opt apparmor:unconfined \
		--security-opt seccomp:unconfined \
		-p 2201:22 \
		$DIND_IMG_NAME
}

function stop_clear() {
	docker stop $CNT_NAME
	docker rm $CNT_NAME
	docker network rm $DIND_NET_NAME
	docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL
}

function restart() {
	docker stop $CNT_NAME
	docker start $CNT_NAME
}

function commit() {
	# clean (for debian images)
	docker exec -it $CNT apt clean
	docker exec -it $CNT apt autoclean
	docker exec -it $CNT apt autoremove -y
	docker exec -it $CNT rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

	# commit
	docker commit $CNT $IMG

	# stop and remove
	docker stop $CNT
	docker rm $CNT

	# squash
	docker-squash -f $(($(docker history $IMG | wc -l | xargs)-1)) -t $IMG $IMG

	# remove old image
	docker rmi -f $BS_IMG

	# remove dangling
	echo "y" | docker image prune

	# remove cache builder
	echo "y" | docker builder prune
}

menu(){
echo -ne "
Docker in Docker
$(ColorGreen '1)') Start/Restart Dind
$(ColorGreen '2)') Stop and Clean Dind
$(ColorGreen '3)') Restart container: $CNT_NAME
$(ColorGreen '4)') Commit Dind Image in: $IMG
$(ColorGreen '0)') Esci
$(ColorBlue 'Scegli la funzione da eseguire:') "
		read a
		case $a in
			1) start_restart ; echo "Task terminato correttamente" ; exit 0 ;;
			2) stop_clear ; echo "Task terminato correttamente" ; exit 0 ;;
			3) restart ; echo "Task terminato correttamente" ; exit 0 ;;
			4) commit ; echo "Task terminato correttamente" ; exit 0 ;;
			0) echo "Uscita: script menu terminato correttamente"; exit 0 ;;
			*) echo -e $red"Hai inserito un opzione errata, ritorno al menu "$clear; menu;;
		esac
}

# Call menu or direct functions

if [ $# -eq 0 ]
	then
		menu
else
		"$@"
fi

Menu complete script (runtime sysbox)

#!/bin/bash

# Utils functions

green='\e[32m'
blue='\e[34m'
clear='\e[0m'

ColorGreen(){
	echo -ne $green$1$clear
}
ColorBlue(){
	echo -ne $blue$1$clear
}

# Env for Dind
# ------------

DIND_IMG_NAME=fabiop85/ubuntu2004-lite-dind:base

DIND_NET_NAME=dind-network
DIND_SUBNET=172.0.0.0/24
DIND_GATEWAY=172.0.0.254

CNT_NAME=ubuntu2004-dind-lite
CNT_HOSTNAME=ubuntu
CNT_NETWORK=$DIND_NET_NAME
CNT_IP=172.0.0.1

CNT_DOCKER_VOL=docker01-vol
CNT_HOME_VOL=home01-vol
CNT_ROOT_VOL=root01-vol

# Env for commit
# --------------

# pip install docker-squash
# https://github.com/goldmann/docker-squash

# to modify
BS_IMG=fabiop85/ubuntu2004-lite-dind:base # After first commit this line can be commented
IMG=fabiop85/ubuntu2004-lite-dind:base-committed
CNT=ubuntu2004-dind-lite

# Functions

function start_restart() {
	mkdir -vp $(pwd)/rootfs/docker
	mkdir -vp $(pwd)/rootfs/home
	mkdir -vp $(pwd)/rootfs/root

	docker stop $CNT_NAME
	docker rm $CNT_NAME
	docker network rm $DIND_NET_NAME
	docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL

	docker network create \
		--driver=bridge \
		--subnet=$DIND_SUBNET \
		--gateway=$DIND_GATEWAY \
		$DIND_NET_NAME

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/docker \
			--opt o=bind \
			$CNT_DOCKER_VOL

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/home \
			--opt o=bind \
			$CNT_HOME_VOL

	docker volume create --driver local \
			--opt type=none \
			--opt device=$(pwd)/rootfs/root \
			--opt o=bind \
			$CNT_ROOT_VOL

	docker run -dit \
		--runtime=sysbox-runc \
		--name=$CNT_NAME \
		--hostname=$CNT_HOSTNAME \
		--network=$DIND_NET_NAME \
		--ip=$CNT_IP \
		-v $CNT_DOCKER_VOL:/var/lib/docker \
		-v $CNT_HOME_VOL:/home/ubuntu \
		-v $CNT_ROOT_VOL:/root \
		-p 2201:22 \
		$DIND_IMG_NAME
}

function stop_clear() {
	docker stop $CNT_NAME
	docker rm $CNT_NAME
	docker network rm $DIND_NET_NAME
	docker volume rm $CNT_DOCKER_VOL $CNT_HOME_VOL $CNT_ROOT_VOL
}

function restart() {
	docker stop $CNT_NAME
	docker start $CNT_NAME
}

function commit() {
	# clean (for debian images)
	docker exec -it $CNT apt clean
	docker exec -it $CNT apt autoclean
	docker exec -it $CNT apt autoremove -y
	docker exec -it $CNT rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

	# commit
	docker commit $CNT $IMG

	# stop and remove
	docker stop $CNT
	docker rm $CNT

	# squash
	docker-squash -f $(($(docker history $IMG | wc -l | xargs)-1)) -t $IMG $IMG

	# remove old image
	docker rmi -f $BS_IMG

	# remove dangling
	echo "y" | docker image prune

	# remove cache builder
	echo "y" | docker builder prune
}

menu(){
echo -ne "
Docker in Docker
$(ColorGreen '1)') Start/Restart Dind
$(ColorGreen '2)') Stop and Clean Dind
$(ColorGreen '3)') Restart container: $CNT_NAME
$(ColorGreen '4)') Commit Dind Image in: $IMG
$(ColorGreen '0)') Esci
$(ColorBlue 'Scegli la funzione da eseguire:') "
		read a
		case $a in
			1) start_restart ; echo "Task terminato correttamente" ; exit 0 ;;
			2) stop_clear ; echo "Task terminato correttamente" ; exit 0 ;;
			3) restart ; echo "Task terminato correttamente" ; exit 0 ;;
			4) commit ; echo "Task terminato correttamente" ; exit 0 ;;
			0) echo "Uscita: script menu terminato correttamente"; exit 0 ;;
			*) echo -e $red"Hai inserito un opzione errata, ritorno al menu "$clear; menu;;
		esac
}

# Call menu or direct functions

if [ $# -eq 0 ]
	then
		menu
else
		"$@"
fi

Tag summary

Content type

Image

Digest

Size

248.3 MB

Last updated

almost 5 years ago

docker pull fabiop85/ubuntu2004-lite-dind:base