Docker
Docker is het buzzword van de huidige tijd. Minder zwaar dan virtuele machines, goede scheiding van de containers. Daarom een overzicht van de mogelijkheden.
Docker voor je Synology NAS-sen
Opdracht CT magazine mei 2016
[github.com/inovex/docker-orchestration TODO-app]
Getest met Debian 8 Jessie. docker.io zit in backports-repository
sudo docker network create todoapp_network
sudo docker run --net=todoapp_network --name=redis-master -d redis
sudo docker run --net=todoapp_network --name=redis-slave -d johscheuer/redis-slave:v1
sudo docker run --net=todoapp_network --name=frontend -d -p 3000:3000 johscheuer/todo-app-web:v1
sudo docker inspect frontend geeft het IP-adres waar je via poort 3000 de frontend kunt bereiken
Containers beheren met Compose
sla docker-compose op in /usr/local/bin en maak met CMD +x uitvoerbaar
ga naar de submap 1-Docker-Tools van de todo-app en voer onderstaand commando uit
sudo docker-compose up -d
sudo docker-compose port todoApp 3000
Dit commando geeft je het ip-adres terug
Machine voor verdelen containers
docker-machine create -d virtualbox cluster-store
docker $(docker-machine config cluster-store) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap -ui-dir /ui
omgevingsvariabele OPTIONS bewaart de configuratie voor de andere hosts
OPTIONS="-d virtualbox --swarm --swarm-discovery=consul://$(docker-machine ip cluster-store):8500 --engine-opt=cluster-store=consul://$(docker-machine ip cluster-store):8500 --engine-opt=cluster-advertise=eth1:0"
docker-machine create ${OPTIONS} -- swarm-master swarm-master
docker-machine create ${OPTIONS} swarm-node-00
docker-machine create ${OPTIONS} swarm-node--01
docker-machine ls toont de draaiende machines
eval $(docker-machine env --swarm swarm-master)
docker-compose up -d
Hiermee start je de todo-app over de 3 aangemaakte virtuele machines
Kubernetes host-overkoepelende orkestratie
export KUBERNETES_PROVIDER=vagrant
export NUM_NODES=3
export KUBERNETES_MEMORY=1024
export MASTER_USER=appuser
export MASTER_PASSWD=k8s-gEhEIm
./cluster/kube-up.sh
./cluster/kubectl.sh get nodes
controleert of ze alle 3 gestart zijn. kubectl.sh cluster-info toont info over de master en het cluster in zijn geheel
Wordpress in een container
mkdir /srv/mysqldata
docker run -d -name mysql-container
-v /srv/mysqldata/:/var/lib/mysql/
-e MYSQL_ROOT_PASSWORD=mysqlpwd mysql
docker run -d -name wordpress-container
-link mysql-container:mysql
-p 8080:80
wordpress
Debian in een container
docker pull debian
docker create --name=mijncontainer -t -i debian
docker start -a -i mijncontainer
docker ps toont alle draaiende containers
docker stop mysql-container wordpress-container voor het stoppen
docker rm mijncontainer voor het verwijderen
docker ps -a toont de aangemaakte containers die niet draaien
docker logs wordpress-container voor het controleren van output in de container
docker exec -t -i wordpress-container bash voor het starten van een interactieve shell
———————————
Oneliner om alle Docker-containers te stoppen en te verwijderen
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
———————————-
Toelichting bij de commando’s in de tekst: De backslashes dienen er alleen voor om een lang commando over meerdere regels onder elkaar te kunnen plaatsen, zodat alles overzichtelijker is op de commandline.
De backslash zorgt er in feite voor dat de shell alles achter de backslash negeert, zodat je er commentaar achter kunt zetten. De rest van het commando komt op de nieuwe regel na een harde return.
docker run -d –name mysql-container \
-v /srv/mysqldata/:/var/lib/mysql/ \
-e MYSQL_ROOT_PASSWORD=mysqlpwd \
mysql
docker run -d –name wordpress-container \
–link mysql-container:mysql \
-p 8080:80 \
wordpress
play with docker, mei 2018 computer en techniek
docker version - toont deze niet experimental dan, instellingen, enable experimental settings
OS/Arch geen windows/amd64, via contextmenu switch to windows containers kiezen
docker run -it microsoft/nanoserver
docker run -it busybox
docker pull --platform=linux busybox