# Labo 12 - Docker Registry Local - Commit

Nous allons voir comment créer un registre local d'images Docker afin de pouvoir les télécharger plus rapidement, créer des images modifiées ou simplement sauvegardé les images existantes

Considérons que votre machine hébergeant le registre local est un machine sous Linux et que docker et docker-compose sont installés.

<p class="callout info">Nous installerons une version dite insecure qui n'est pas viable en production</p>

Vous pourrez retrouver la documentation complète [ici](https://docs.docker.com/registry/)

Tout d'abord, il faut éditer ou créer le fichier docker-compose.yml

```shell
sudo vim /opt/docker/docker-compose.yml
```

```YAML
version: "3.8"
services:
  registry:
    container_name: registry
    restart: always
    image: registry:latest
    ports:
      - 5000:5000
    volumes:
      - /opt/docker/registry/data:/var/lib/registry
      - /opt/docker/registry/certs:/certs
      - /opt/docker/registry/auth:/auth
```

Ensuite, il faudra éditer ou créer un fichier sur la machine qui hébergera le registre local ainsi que sur celle qui voudra récupérer l'image

```shell
sudo vim /etc/docker/daemon.json
```

```JSON
{
  "insecure-registries" : ["myregistry.local:5000"]
}
```

Ensuite il faudra modifier le fichier hostname et le fichier hosts de notre machine. A noter qu'il faudra bien déclarer la machine hébergeant le registre local dans le fichier hosts des autres machines voulant récupérer les images

Pour le fichier hostname

```shell
sudo nano /etc/hostname
```

```shell
myregistry.local
```

Et pour le fichier hosts

```shell
sudo vim /etc/hosts
```

```shell
127.0.0.1	localhost
192.168.1.226   localhost
127.0.0.1	myregistry.local
192.168.1.226   myregistry.local
```

Ensuite on redémarre les démons et le service docker

```
sudo systemctl daemon-reload
sudo systemctl restart docker
```

Maintenant on peut lancer le conteneur

```shell
sudo docker-compose up -d
```

Le conteneur tourne et est opérationnel

docker push bash

docker tag

```shell
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload
```