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.
Plaats reactie