Kurz mal die neuste Version einer Software, eines Pakets, einer Library installieren und testen? Keine Lust extra eine VM dafür zu konfigurieren?

Nimm Docker.

Voraussetzung

– Docker ist installiert und konfiguriert
– das Beispiel läuft in dieser Form nur auf einem OS mit Linux Kernel

Vorbereitungen

Es wird nun ein Folder erstellt mit allen für das Docker-Image relevanten Daten. Das Testscript main.sh dient nur dazu, den Container in einer Endlosschlaufe zu halten, um sich später zum Container connecten zu können.

mkdir $HOME/lab

Anlegen eines Testscripts für die Endlosschlaufe

cd $HOME/lab
cat << 'EOF' > main.sh
#!/bin/bash
if [ "$1" = "-loop" ]
   then
   while true
     do
     echo `date` >> /var/lab/date.txt
     sleep 10
  done
else
  echo "-loop : container runs in a loop"
fi
EOF

chmod 755 main.sh

Falls Daten in das Docker Image müssen, diese nun in den Folder $HOME/lab kopieren.

Nun wird das Dockerfile angelegt:

cd $HOME/lab
cat << 'EOF' > dockerfile
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
    curl \
    && mkdir -p /opt/lab \
    && mkdir -p /var/lab

EXPOSE 80 443
VOLUME ["/var/lab"]
COPY . /opt/lab/
WORKDIR /opt/lab/

ENTRYPOINT ["./main.sh"]
CMD ["-h"]
EOF

Docker Image erstellen und Container erzeugen

Nun wird das eigentliche Image gebildet und der Container erzeugt:

cd $HOME/lab
sudo docker build -t mylab .
sudo docker run -d mylab -loop
CONTAINER=`sudo docker ps| grep mylab | head -n1 |awk {'print $NF}'`

Container connecten

Ob der Container läuft kann mit “sudo docker ps | grep mylab” überprüft werden. Es sollte ein Container am laufen sein:

sudo docker ps | grep $CONTAINER

2aa0bb61c474 mylab  <snip>   80/tcp, 443/tcp  lucid_taussig

Nun kann der Container connected werden und eine interaktive Shell startet:

sudo docker exec -it $CONTAINER /bin/bash

Container stop und restart

Der container kann nach Gebrauch gestoppt werden:

sudo docker stop $CONTAINER

Wenn das Express-Lab nochmals gestartet werden soll, dann einfach:

sudo docker start $CONTAINER

sudo docker exec -it $CONTAINER /bin/bash

Have Fun!

Schreibe einen Kommentar