# Les conteneurs

\- Build une image docker  
\- Lancer une image docker  
\- Lister les conteneurs   
\- Se connecter dans un conteneur  
\- Lancer un conteneur  
\- Logs d'un conteneur  
\- Supprimer les containeurs

# Les commandes de bases

### Build une image docker

```shell
sudo docker build -t open-rimworld .
```

### Lancer une image docker

```shell
sudo docker run -dt open-rimworld
```

### Lister les conteneurs 

```shell
sudo docker ps -a
```

### Se connecter dans un conteneur

```shell
sudo docker exec -it <Container_name> bash
```

### Lancer un conteneur

```shell
sudo docker start <Container_name>
```

### Logs d'un conteneur

```shell
sudo docker logs <Container_name>
```

### Supprimer les containeurs

```
docker rm [OPTIONS] CONTAINER [CONTAINER...]
```

#### Supprimer tous les containeurs arrêté

```Powershell
docker container prune
```

# (UFW) ne bloque rien lors de l'utilisation de Docker

Le problème était l'utilisation du drapeau `-p` sur les conteneurs.

Il s'avère que Docker fait des changements directement sur votre *iptables*, qui ne sont pas affichés avec le statut *ufw*.

Les solutions possibles sont les suivantes :

- **1.** Arrêtez d'utiliser le drapeau -p. Utilisez plutôt docker linking ou docker networks.
- **2.** Liez les conteneurs localement afin qu'ils ne soient pas exposés à l'extérieur de votre machine : 
    - `docker run -p 127.0.0.1:8080:8080 ...`
- **3.** Si vous insistez pour utiliser le paramètre `-p`, dites à docker de ne pas toucher à vos `iptables` en les désactivant dans `/etc/docker/daemon.json` et en redémarrant : 
    - `{ "iptables" : false }`

**Je recommande l'option 1 ou 2.** Attention, <span style="text-decoration: underline;">**l'option 3** a des effets secondaires</span>, comme l'impossibilité pour les conteneurs de se connecter à l'internet.