> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/os/docker.md).

# Docker

Quelques commandes utiles

{% hint style="success" %}
<https://docs.docker.com/reference/cli/docker/>
{% endhint %}

## Cheatsheet

Chaque conteneur a un identifiant visible avec `docker ps -a`.

* [#installer-un-conteneur-a-partir-dune-image](#installer-un-conteneur-a-partir-dune-image "mention")
* [#informations-sur-le-conteneur](#informations-sur-le-conteneur "mention")
* [#lister-les-conteneurs](#lister-les-conteneurs "mention")
* [#supprimer-tous-les-conteneurs-actifs-et-arretes](#supprimer-tous-les-conteneurs-actifs-et-arretes "mention")
* [#demarrer-redemarrer-arreter](#demarrer-redemarrer-arreter "mention")
* [#executer-une-commande](#executer-une-commande "mention")
* [#obtenir-un-shell-dans-le-conteneur](#obtenir-un-shell-dans-le-conteneur "mention")
* [#en-tant-que-root](#en-tant-que-root "mention")
* [#voir-les-logs](#voir-les-logs "mention")
* [#extraire-inserer-un-fichier](#extraire-inserer-un-fichier "mention")
* [#lister-les-capacites-dun-conteneur](#lister-les-capacites-dun-conteneur "mention")

#### **Installer un conteneur à partir d'une image**

```
docker run [--name <custom_name> --detach ...] <image>

# lier un dossier du conteneur et un dossier de l'hôte
# chaque modification du dossier dans le conteneur est réfléchie dans le dossier hôte
docker run -v <chemin dossier hôte>:<chemin dossier conteneur> <image>

# port forwarding
docker run -p <port hôte>:<port conteneur>

# ajouter des capacités au conteneur
docker run --cap-add=<capacité Linux>
```

#### **Informations sur le conteneur**

```
docker inspect <id>
```

#### **Lister les conteneurs**

```
# conteneurs actifs
docker ps

# tous les conteneurs
docker ps -a
```

#### **Supprimer tous les conteneurs (actifs et arrêtés)**

```
docker rm -v -f $(docker ps -qa)
```

#### **Démarrer / redémarrer / arrêter**

```
docker start/restart/stop <id>
```

#### **Exécuter une commande**

```
docker exec <id> <command>
```

#### **Obtenir un shell dans le conteneur**

```
docker exec -it <id> bash
```

#### **En tant que root**

```
# exécuter une commande
docker exec --user root <id> <command>

# obtenir un shell
docker exec --user root -it <id> bash
```

#### **Voir les logs**

```
docker logs <id>
```

#### **Extraire / insérer un fichier**

```
# extraire
docker cp <id>:<chemin dans le conteneur> <chemin destination sur l'hôte>

# insérer
docker cp <chemin sur l'hôte> <id>:<chemin destination dans le conteneur>
```

#### Lister les capacités d'un conteneur

```
# depuis l'hôte
docker inspect <id>

# depuis le conteneur
capsh --print
```
