Skip to content

Alpine image with Ssh, Crontab, Docker and Terraform

License

Notifications You must be signed in to change notification settings

manprint/alpine-dind

Repository files navigation

Alpine image with Ssh, Crontab, Docker, Terraform and Webssh

Immagine docker alpine con installati docker, cron, ssh, terraform e webssh.

Uso

Uso destinato esclusivamente alla creazione di ambienti di test, pipeline, ci/cd, etc.

NON UTILIZZARE IN PRODUZIONE!

Prerequisiti

  • Se si usa il comando rapido, l'immagine non ha prerequisiti.
  • Make deve essere installato sulla macchina host per poter utilizzare il makefile:
    sudo apt install make
    

Avvio rapido privilegiato

docker run -d \
	--name=dind-env \
	--hostname=alpine \
	--privileged=true \
	--publish=2375:2375/tcp \
	--publish=2255:22/tcp \
	--publish=8888:8888/tcp \
	ghcr.io/manprint/alpine-dind:latest

Avvio rapido non privilegiato (sysbox) (consigliato)

Per utilizzare il runtime sysbox è necessario installarlo seguendo le istruzioni della pagina dello sviluppatore: Nota bene: installare la release v0.5.0 (https://github.com/nestybox/sysbox/releases)

Ulteriori riferimenti al repo di sviluppo sysbox:

docker run -d \
	--name=dind-env \
	--hostname=alpine \
	--runtime=sysbox-runc \
	--publish=2375:2375/tcp \
	--publish=2255:22/tcp \
	--publish=8888:8888/tcp \
	ghcr.io/manprint/alpine-dind:latest

Gestione container tramite makefile

Per comodità, è stato creato un MakefileLite per eseguire i task di avvio, stop, etc. del container. Per utilizzare il makefile seguire le istruzioni seguenti:

  • Creare una cartella di lavoro, ad esempio ~/dind-env ed entrare nella cartella

  • Scaricare il makefile (versione Lite, senza i task di test e push) tramite il seguente comando:

    curl -sSL https://raw.githubusercontent.com/manprint/alpine-dind/develop/MakefileLite -o Makefile
    
  • Eseguire il comando make per vedere i task disponibili

  • Modificare il makefile se è necessario secondo le proprie esigenze (ad esempio per aggiungere la persistenza o inserire una network)

Connessione al container

Per connettersi al container è possibile utilizzare i seguenti metodi:

Connessione nativa docker

docker exec -it dind-env bash

Connessione ssh

ssh -o 'StrictHostKeyChecking no' -p 2255 alpine@localhost

Connessione webssh (tramite browser)

Aprire il browser all'indirizzo:

http://localhost:8888/

Inserire i seguenti dati:

  • host: localhost
  • port: 22 (porta interna del container)
  • username: alpine
  • password: alpine

In modo più rapido, i dati possono essere passati come query string (la password è alpine in base64: YWxwaW5l):

http://localhost:8888/?hostname=localhost&username=alpine&password=YWxwaW5l&title=Alpine-Dind

Persistenza

Volume configurato nell'immagine: /var/lib/docker

Persistenza docker

Si consiglia per la persistenza della directory di docker di utilizzare un named volume. La riga da aggiungere all'avvio rapido ed al makefile è la seguente:

--volume=docker_alpine_volume:/var/lib/docker \

In alternativa, è possibile utilizzare un binded volume; seguono le istruzioni:

  • Creazione cartella locale (sostituire user con il proprio utente o specificare un path specifico):

    export USER=user
    mkdir /home/$USER/docker_alpine_volume
    
  • Comando da aggiungere all'avvio rapido oppure al makefile (sostituire user con il proprio utente o specificare un path specifico):

    --volume=/home/$USER/docker_alpine_volume:/var/lib/docker \
    

Persistenza home utente alpine

Per la persistenza della cartella home dell'utente alpine (utente predefinito, UID=1000, GID=1000 all'interno del container) utilizzare un binded volume. Le istruzioni e la riga da aggiungere al makefile ed all'avvio rapido sono le seguenti:

  • Creazione cartella locale (sostituire user con il proprio utente o specificare un path specifico):

    export USER=user
    mkdir /home/$USER/home_alpine_volume && chown -R 1000:1000 /home/$USER/home_alpine_volume
    
  • Comando da aggiungere all'avvio rapido oppure al makefile (sostituire user con il proprio utente o specificare un path specifico):

    --volume=/home/$USER/home_alpine_volume:/home/alpine \
    

Esempio di avvio con persistenza

Nota Bene: sostituire i path locali dei volumi con quelli relativi al proprio ambiente

Avvio privilegiato

docker run -d \
	--name=dind-env \
	--hostname=alpine \
	--privileged=true \
	--publish=2375:2375/tcp \
	--publish=2255:22/tcp \
	--publish=8888:8888/tcp \
	--volume=/home/mint/docker/dind-alpine/docker-vol:/var/lib/docker \
	--volume=/home/mint/docker/dind-alpine/alpine-vol:/home/alpine \
	ghcr.io/manprint/alpine-dind:latest

Avvio non privilegiato (sysbox) (consigliato)

docker run -d \
	--name=dind-env \
	--hostname=alpine \
	--runtime=sysbox-runc \
	--publish=2375:2375/tcp \
	--publish=2255:22/tcp \
	--publish=8888:8888/tcp \
	--volume=/home/mint/docker/dind-alpine/docker-vol:/var/lib/docker \
	--volume=/home/mint/docker/dind-alpine/alpine-vol:/home/alpine \
	ghcr.io/manprint/alpine-dind:latest