Services/Docker.md
... ...
@@ -6,7 +6,7 @@
6 6
7 7
Au ResEl nous nous servons de Docker pour quelques services, ce qui permet de les tester facilement et de les déployer facilement sur les différentes marchines.
8 8
9
-Afin de faciliter la diffusion des images docker le ResEl possède un registre installé sur la machine (/Serveurs/Mobydick) accessible à l'adresse https://docker.resel.fr.
9
+Un registre docker interne au ResEl est disponible sur [Mobydick](Serveurs/mobydick). Il permet de partager les images docker du ResEl sans utiliser le registre publique (hub.docker.com), et sans devoir rebuilder depuis les sources (Dockerfile) à chaque fois.
10 10
11 11
# Motivations
12 12
... ...
@@ -22,17 +22,17 @@ Cette terminologie est nécessaire pour bien comprendre les principes, cependant
22 22
* *Image :* Modèle d'un conteneur. Dans le cas de Docker, un système de fichier (`/etc`, `/var`, ...) compressé.
23 23
* *Dockerfile :* Fichier décrivant comment construire une image de façon automatique.
24 24
* *Registre :* Serveur (optionnel) contenant les images. docker.resel.fr chez nous.
25
+* *Hôte* : marchine hébergeant un ou plusieurs containers
25 26
* *Tag :* Identifiant d'une image. Généralement `registre/sercice:version`, par exemple `docker.resel.fr/myresel:latext`.
26 27
27 28
28
-
29 29
# Mise en place
30 30
31
-## Hote Docker
31
+## Hôte Docker
32 32
La mise en place d'un hote Docker sur n'importe quelle machine est très simple.
33 33
La méthode recommandée est d'utiliser le [playbook Ansible associé](https://git.resel.fr/confs/ansible/blob/master/playbooks/docker-host.yml)
34 34
35
-Voici cepedant la méthode manuelle suivant la [documentation officielle](https://docs.docker.com/engine/installation/linux/debian/) :
35
+Voici cepedant la méthode manuelle suivant la [documentation officielle](https://docs.docker.com/engine/installation/linux/debian/) avec quelques spécificités pour le ResEl :
36 36
37 37
Installez les dépendances nécéssaires :
38 38
```bash
... ...
@@ -66,7 +66,7 @@ Mettez à jour l'index avec un `apt update` puis installez docker :
66 66
apt update && apt install docker-ce
67 67
```
68 68
69
-:warning: Si vous-vous trouvez dans le VLAN admin ou un autre VLAN sans internet
69
+:warning: Si vous-vous trouvez dans le réseau admin ou un autre réseau sans internet
70 70
il faut configurer apt pour passer par le proxy apt. Créez le fichier
71 71
`/etc/apt/conf.d/01reselproxy-docker.j2` :
72 72
```
... ...
@@ -82,83 +82,78 @@ sudo docker run hello-world
82 82
83 83
Vous pouvez ensuite utiliser docker "normalement".
84 84
85
-Pour utiliser le registre du ResEl (mobydick) vous devez faire un peu plus de configuration. En effet celui-ci n'est pas accessible au public et il faut donc s'y authentifier.
85
+Pour utiliser le registre du ResEl (mobydick) vous devez faire un peu plus de
86
+configuration. En effet celui-ci n'est pas accessible au public et il faut donc
87
+s'y authentifier.
86 88
87 89
TODO : Comment s'auth au registre du ResEl
88 90
89 91
## Registre Docker (mobydick)
92
+
90 93
TODO : installer un registre Docker au ResEl
91 94
92 95
# Utilisation
93 96
94
-
95
-### Intérêt
97
+## Relancer le registre
98
+
99
+Il arrive que le registre s'etteigne (pendant les mises à jour par exemple).
100
+Voici la procédure pour le relancer :
101
+
102
+```bash
103
+cd /srv/docker_registry/
104
+docker-compose up -d
105
+```
96 106
97
-Les utilisations de Docker sont multiples mais un des aspects le plus intéréssant pour le ResEl est la p... *(??? La légende raconte qu'El touré voulait du Wi-Fi, ce qui a empêché cette malheureuse personne de finir sa phrase...)*
98 107
99 108
## Lancer un conteneur
100 109
101
-Une image peut être récupérée sur un registre :
102
-```
110
+Sur un hôte une image peut être récupérée sur le registre docker officiel
111
+```bash
103 112
docker pull jwilder/nginx-proxy
104 113
```
105 114
106
-Ou compilé en local depuis un Dockerfile :
115
+Sinon vous pouvez récupérer les images sur le registre du ResEl :
116
+```bash
117
+docker pull docker.resel.fr/web:latest
107 118
```
119
+
120
+Voire même ou compilé en local depuis un Dockerfile :
121
+```bash
108 122
git clone https://github.com/jwilder/nginx-proxy.git
109
-docker build . --tag jwilder/nginx-proxy
123
+docker build . --tag docker.resel.fr/nginx-proxy:latest
110 124
```
111 125
112
-
113
-
114 126
## Créer une image
115 127
116
-TODO
117
-
118 128
119 129
## Utilisation du Registry Interne : mobydick
120 130
121
-Un registre docker interne au ResEl est disponible sur [Mobydick](Serveurs/mobydick). Il permet de partager les images docker du ResEl sans utiliser le registre publique (hub.docker.com), et sans devoir rebuilder depuis les sources (Dockerfile) à chaque fois.
122 131
123 132
Une fois qu’une image est testée/validée, elle peut-être pushé sur le registre.
124 133
Par exemple si en local j’ai l’image :
125 134
126
-```
127
-$docker ps
135
+```bash
136
+docker ps
128 137
129 138
[…]
130 139
resel/sympa:6.2 97cd19850580
131 140
```
132 141
133 142
Alors il faut associer l’image au dépôt :
134
-```
143
+```bash
135 144
docker tag 97cd19850580 docker.resel.fr/sympa:6.2
136 145
```
137 146
138 147
Puis envoyer l’image :
139
-```
148
+```bash
140 149
docker push docker.resel.fr/sympa:6.2
141 150
```
142 151
143 152
Maintenant l’image peut-être récupérée sur les autres machines :
144
-```
153
+```bash
145 154
docker pull docker.resel.fr/sympa:6.2
146 155
```
147 156
148
-NOTE : je crois que ceci est faux au 2016-12-10 :
149
-Il n’y a pas encore de certificat SSL sur le registre, il faut donc que les démons docker sur les clients aient été configurés avec l’option --insecure-registry. C’est le cas du template debian8 sur proxmox.
150
-```
151
-DOCKER_OPTS="--insecure-registry docker.resel.fr”
152
-```
153
-
154
-NOTE: ceci ne fonctionne pas...
155
-La liste des images (et pleins d’autres choses) peuvent-être obtenues via l’API rest :
156
-```
157
-$ curl docker.resel.fr/v2/_catalog
158
- {"repositories":["resel/sympa”]}
159
- ```
160
-
161
-
162 157
## Guides
163 158
164 159
TODO