Terug naar overzicht

In het eerste deel van deze miniseries hebben we wat uitleg over containers en het doel gegeven. In dit deel gaan we aan de slag met het installeren van Apache binnen een Docker container.

Voorbereiding

Om de instructies in deze blog zelf uit te kunnen voeren dien je een bestaande server (virtueel of fysiek) te hebben met root rechten op een Linux distributie. In het voorbeeld is gekozen voor CentOS 7 x86_64 (64 bit).

Docker vereisten

Om Docker te kunnen gebruiken beginnen we met het installeren van een aantal standaard packages.

[root@docker01 ~]#  yum install -y yum-utils device-mapper-persistent-data lvm2

Deze packages dienen het volgende doel:

  • yum-utils – Levert de yum-config-manager, die we later gebruiken om de Docker repository toe te voegen.
  • Device-mapper-persistent-data – Gebruikt voor de devicemapper storage driver, een van de mogelijke storage drivers die door Docker gebruikt kunnen worden.
  • lvm2 – Gebruikt voor de devicemapper storage driver.

Docker repository

Na het installeren van alle vereiste packages kunnen we door met het toevoegen van de Docker repository. Een repository is een opslagplek voor software. Door de repository toe te voegen kunnen we eenvoudig, met de CentOS package manager ‘yum’ de software installeren op het systeem.

[root@docker01 ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Failed to set locale, defaulting to C

Loaded plugins: fastestmirror

adding repo from: https://download.docker.com/linux/centos/docker-ce.repo

grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

repo saved to /etc/yum.repos.d/docker-ce.repo

Docker packages

Nu de repository toegevoegd is, kunnen we Docker inclusief alle toebehoren installeren, en vervolgens starten.

[root@docker01 ~]# yum -y install docker-ce docker-ce-cli containerd.io

- na installatie -

[root@docker01 ~]# systemctl start docker

[root@docker01 ~]# systemctl status docker

docker.service - Docker Application Container Engine

   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

   Active: active (running) since Wed 2019-08-28 09:41:08 CEST; 7s ago

     Docs: https://docs.docker.com

 Main PID: 4943 (dockerd)

   Memory: 44.5M

   CGroup: /system.slice/docker.service

           └─4943 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

My first container

Nu Docker inclusief alle basis packages geinstalleerd is, kunnen we onze Apache container opbouwen. We maken hiervoor een nieuwe container, genaamd interconnnect-demo-container op basis van het image httpd:2.4.

Vervolgens maken we een mapping tussen poort tcp/8888 extern en poort 80 op de container, waar onze Apache installatie in de container op luistert. 

Als laatste maken we een filesystem mapping. /home/interconnect/htdocs op het ‘root’ filesystem wordt gemapt aan /usr/local/apache2/htdocs binnen de container.

[root@docker01 htdocs]# docker run -dit --name interconnnect-demo-container -p 8888:80 -v /home/interconnect/htdocs/:/usr/local/apache2/htdocs/ httpd:2.4

Unable to find image 'httpd:2.4' locally

2.4: Pulling from library/httpd

1ab2bdfe9778: Pull complete

174a8e3bca83: Pull complete

c8e4c9e94892: Pull complete

4568916ecf2d: Pull complete

533f5cf513cb: Pull complete

Digest: sha256:98caed3e3a90ed9db8d25dcbb98eebe0ce56358a9dbbc940d7eb66a8e2b88252

Status: Downloaded newer image for httpd:2.4

7cde740fb660cf1e22b7dc0890e59c229a62ee9302905c9738c27dedfa29e33b

Na het succesvol aanmaken van de container wordt deze ook automatisch gestart. Hierin is de naam, de image, en de poort-mapping te verifieren.

[root@docker01 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES

6e37a7be0c5f        httpd:2.4           "httpd-foreground"   2 minutes ago       Up 2 minutes        0.0.0.0:8888->80/tcp   interconnnect-demo-container

Als laatste plaatsen we een test webpagina in de container, door op het ‘root’ filesystem een pagina te maken.

[root@docker01 ~]# echo "dit is een docker test" > /home/interconnect/htdocs/docker.html

Wanneer we vervolgens naar http://<ip>:8888/docker.html gaan, zien we onze docker testpagina en is onze eerste container up and running.

docker

Plaats reactie

1000 Resterende tekens