This project aims to broaden your knowledge of system administration by using Docker. You will virtualize several Docker images, creating them in your new personal virtual machine.

-The subject.

In this project, there are a few new notions that we should first get to know before diving into the work, we need a solid ground first, you can find below a few definition cards.

Definitions:


please note that the definitions below are very basic and short, their purpose is just to help you get started, for a deeper adventure I highly recommend reading the following ReadMe and the articles it have.

First, What is a Docker?

• Docker:

• Docker images

Docker compose

DockerHub

• TLSv1.2/3

• WordPress + php-fpm

• PID 1

• Docker Container

Docker Volumes

Dockerfile

• NGINX

• docker-network

• MariaDB


Alpine Or Debian ?


we are asked to build our containers based on either Alpine or Debian, so here are a few comparisons of these two:

The **alpine** image is very small since the alpine community pays a lot of attention to minimizing this image. while Debian ****is rich on packages which makes its image larger, this may sound good at first but please keep in mind that those extra packages are not of a big use to us, so they are making the creation of a container slower with little to no benefits.


After this comparison and all the definitions we saw, we are able to better understand what a docker is, and what it is for, and from where we will start this project.


why would we use a VM?


Since we are asked to work on this project inside a Virtual Machine, we might think that. the first step is to install it, but not necessarily since the whole point of working with docker is to build application environment-independent, so they are welling to work finely and efficiently in both Linux and macOs, so why the VM?

Simply because we need to manage some users in one of our apps, so we’ll need root privilege which smth we don’t have given in our school, that’s all it is.

To not conflict things, our containers are the ones that should be based on either Alpine or Debian, But the Virtual Machine we will be using to work inside it could be any OS, and not specially Linux distributions.

we night think that it should be a Linux distro since we know that the Docker containers are similar to VM but without their own Kernels, which means they use the Kernel of the OS where the docker itself is installed, but that doesn’t mean we can’t do the same on other distros, the difference is that -let say for example Windows- when installing docker for the very first time, other tools will be installed as well, that will make it as if there is a kernel similar to this of linux.

so we can install and work with whatever OS we want, installing an os on VM is a piece of cake so i’ll skip to next things.


Dockerfile


This is the file that our image will use to get built, below is an example of a dockerfile