Docker

dockerCloud-diensten, zoals Microsoft Azure, worden o.a. gebruikt om virtuele machines uit te rollen. De virtualisatie maakt het mogelijk om hardware-resources te delen tussen de VM’s en kan zodoende efficiënt ingezet worden.

Met de mogelijkheid om containers te kunnen gebruiken wordt het gebruik nog efficiënter doordat nu zelfs het onderliggende OS gedeeld wordt. Deze containers zijn eenvoudig uit te rollen en images die nodig zijn in deze containers kunnen met docker uitgerold worden.

Met docker is het mogelijk om via de command line (CLI) containers te maken en te beheren. Binnen Linux gebeurt dat via LCX. Op Microsoft Azure kan eenvoudig een Linux host gemaakt worden die ondersteuning biedt voor containers.

In CentOS kan docker geïnstalleerd worden met:

sudo yum install -y docker docker-registry
systemctl enable docker.service
systemctl start docker.service

Docker is er trouwens ook voor Apple en Windows. Indien je een 64-bits OS hebt en virtualisatie is enabled in de hardware, kun je Docker installeren. Om te controleren of virtualisatie in Windows aan staat, kijk even in de Prestaties van Taskbeheer:

prestatieContainers is een nieuwe feature voor Windows 10 en deze kan o.a. met powershell geïnstalleerd worden:

Enable-WindowsOptionalFeature -Online -FeatureName containers -All

Daarbij wordt Hyper-V gebruikt als Hypervisor voor de containers en ook dat is een feature die aangezet kan worden met bv. powershell. De computer dient daarna wel herstart te worden::

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Restart-Computer -Force

Docker for Windows

Docker for Windows installeren we via https://download.docker.com/win/stable/InstallDocker.msi

Hierna is docker geïnstalleerd en gereed voor gebruik.

Het commando ‘docker’ wordt gevolgd door een subcommando, bijvoorbeeld ‘run’ dat aangeeft dat een image gestart moet worden. De naam van de image dient ingegeven te worden en als voorbeeld is er ‘hello-world’ waardoor het volledige commando er als volgt uitziet:

docker run hello-world

Het resultaat:docker-install03

Er wordt eerst gecontroleerd of de image ‘hello-world’ lokaal aanwezig is, zoniet dan wordt deze gedownload van de Docker Hub waarna het geladen en uitgevoerd wordt.

Om bijvoorbeeld een ubuntu container te starten, type het volgende commando:

docker run -it ubuntu bash

Het resultaat is een geïsoleerde Ubuntu bash shell:

docker-bashIn de Docker Hub kunnen gebruikers en bedrijven hun code plaatsen die dan door iedereen gebruikt kunnen worden.

Kijk op https://hub.docker.com voor een Docker image genaamd ‘whalesay

docker-hubOm deze image te gebruiken binnen onze Ubuntu server, type het volgende commando:

docker run docker/whalesay cowsay Hello World!

whalesay01De eerste keer dat dit commando uitgevoerd wordt zal docker de image zoeken op het lokale systeem. Als het daar (nog) niet aanwezig is wordt het opgehaald van de Docker Hub. Met het commando docker images wordt een lijst met aanwezige images getoond. als de whalesay image nogmaals wordt aangeroepen zal deze vanuit de lokale verzameling images gestart worden.

whalesay02We kunnen ook zelf een docker image schrijven en deze laden. Laten we hier een directory maken genaamd mydockerbuild

mkdir mydockerbuild
cd mydockerbuild

Hier gaan we een bestand maken genaamd Dockerfile met

vi Dockerfile

We geven dit bestand de volgende inhoud:

FROM docker/whalesay:latest
MAINTAINER Nico Oosterwijk <noosterwijk@hotmail.com>
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Het woord ‘FROM‘ laat docker weten welke image gebruikt gaat worden, vervolgens doen we een update van apt-get met ‘RUN’ om daarna ‘fortunes’ te installeren en uit te voeren met ‘CMD’.

Nadat dit bestand is aangemaakt gaan we docker instructie geven om er een image van te maken met:

docker build -t docker-whale .

(vergeet de laatste . punt niet)

Met het commando ‘docker images‘ worden de lokale images getoond en dus ook degene die we zojuist gemaakt hebben:


docker-imagesOm deze uit te voeren:

docker run docker-whale


docker-whaleDe docker image gaan we delen met de wereld! In de Docker Hub gaan we een repository maken en we loggen vervolgens in via het commando ‘docker login

We taggen de image met het image ID:

docker tag 6d6944493858 nokkie/docker-whale:latest

Vervolgens geven we het commando ‘docker push‘ om de image in de repository te plaatsen.

docker-pushdocker-hub2That’s all folks!