# Installation Docker & Docker-compose

# Installation de Docker en ligne de commande

Le paquet d'installation de Docker disponible dans le dépôt officiel de Debian peut ne pas être la dernière version. Pour s'assurer d'obtenir la dernière version, nous allons installer Docker à partir du dépôt officiel de Docker. Pour cela, nous allons ajouter une nouvelle source de paquet, ajouter la clé GPG de Docker pour s'assurer que les téléchargements sont valides, puis installer le paquet.

Installer quelques paquets prérequis qui permettent à apt d'utiliser des paquets sur HTTPS :

```bash
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
```

Ajoutez ensuite la clé GPG du dépôt officiel de Docker à votre système :

```bash
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
```

Ajouter le dépôt Docker aux sources APT :

```bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
```

Ensuite, mettez à jour la base de données de paquets avec les paquets Docker du nouveau repo :

```bash
sudo apt update
```

Make sure you are about to install from the Docker repo instead of the default Debian repo:

```bash
apt-cache policy docker-ce
```

You’ll see output like this, although the version number for Docker may be different:

<div class="code-label" id="bkmrk-output-of-apt-cache-" title="Output of apt-cache policy docker-ce">Output of apt-cache policy docker-ce</div>```
docker-ce:
  Installed: (none)
  Candidate: 5:20.10.12~3-0~debian-buster
  Version table:
     5:20.10.12~3-0~debian-buster 500
        500 https://download.docker.com/linux/debian buster/stable amd64 Packages

```

Notice that `docker-ce` is not installed, but the candidate for installation is from the Docker repository for Debian 10 (`buster`).

Finally, install Docker:

```bash
sudo apt install docker-ce
```

Docker is now installed, the daemon started, and the process enabled to start on boot. Check that it’s running:

```bash
sudo systemctl status docker
```

The output will be similar to the following, showing that the service is active and running:

<div class="secondary-code-label" id="bkmrk-output" title="Output">Output</div>```
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: <mark>active</mark> (running) since Mon 2019-07-08 15:11:19 UTC; 58s ago
     Docs: https://docs.docker.com
 Main PID: 5709 (dockerd)
    Tasks: 8
   Memory: 31.6M
   CGroup: /system.slice/docker.service
           └─5709 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

```

Installing Docker gives you not just the Docker service (daemon) but also the `docker` command line utility, or the Docker client. We’ll explore how to use the `docker` command later in this tutorial.

# Redirection flux conteneur avec Apache

Pour rendre accessible un conteneur via un nom de domaine il faut réaliser une configuration vhost Apache un peu particulière.

Par exemple, pour rediriger tout le trafic provenant de l'url `container.domaine.com` vers le conteneur `mycontainer1` écoutant sur le port 3000, il faut faire la configuration suivante :

```bash
<VirtualHost *:80>
        ServerName container.domaine.com

        ErrorLog ${APACHE_LOG_DIR}/container.domaine.com.log
        CustomLog ${APACHE_LOG_DIR}/container.domaine.com.log combined

        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/

        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>
</VirtualHost>
```

Cependant cette configuration vhost demande l'activation de plusieurs module qui ne sont pas activés par défaut dans Apache.

# Installation de docker-compose

Update the package index, and install the latest version of Docker Compose:

- For Ubuntu and Debian, run:
    
    ```console
    $ sudo apt-get update
    $ sudo apt-get install docker-compose-plugin
    ```