Services/Docker.md
... ...
@@ -9,7 +9,7 @@ ce qui permet de les tester facilement et de les déployer facilement sur les
9 9
différentes machines.
10 10
11 11
Un registre docker interne au ResEl est disponible sur
12
-[Mobydick](/Serveurs/mobydick). Il permet de partager les images docker du ResEl
12
+[Whitewhale](/Serveurs/whitewhale). Il permet de partager les images docker du ResEl
13 13
sans utiliser le registre publique (hub.docker.com), et sans devoir rebuilder
14 14
depuis les sources (Dockerfile) à chaque fois.
15 15
... ...
@@ -125,42 +125,45 @@ Vous constaterez que la commande `docker login` a créé un fichier
125 125
126 126
Vous pouvez désormais sur cet hôte vous connecter au registre du ResEl.
127 127
128
-## Installation du Registre Docker (mobydick)
128
+## Installation du Registre Docker (Whitewhale)
129 129
130 130
Comme c'est écrit partout, le registre docker est installé sur la machine
131
-mobydick. Comble du bonheur, celui-ci est installé grâce à `docker-composer` ce
131
+Whitewhale. Comble du bonheur, celui-ci est installé grâce à `docker-compose` ce
132 132
qui permet d'orchestrer plusieurs containers en même temps.
133 133
134 134
Comme la plupart des services ResEl, la configuration se trouve dans le dossier
135 135
`/srv/` et plus précisément dans `/srv/docker_registry`.
136 136
137
-Le système est composé de deux containers `nginx` et `registry`. La
137
+Le système est composé d'un seul container : `registry`. La
138 138
configuration est détaillée dans le fichier
139 139
`/srv/docker_registry/docker-compose.yml` :
140 140
```yaml
141
-nginx:
142
- image: "nginx:1.9"
143
- ports:
144
- - 443:443
145
- links:
146
- - registry:registry
147
- volumes:
148
- - ./nginx/:/etc/nginx/conf.d:ro
149
-
150
-registry:
151
- image: registry:2
152
- ports:
153
- - 127.0.0.1:5000:5000
154
- environment:
155
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
156
- volumes:
157
- - ./data:/data
141
+version: '2'
142
+services:
143
+ registry:
144
+ restart: always
145
+ image: registry:2
146
+ ports:
147
+ - "5000:5000"
148
+ environment:
149
+ REGISTRY_AUTH: htpasswd
150
+ REGISTRY_AUTH_HTPASSWD_REALM: Registry
151
+ REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.passwd
152
+ REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
153
+ volumes:
154
+ - ./auth:/auth
155
+ - ./data:/data
158 156
```
159 157
160 158
On notera que le volume contenant les données du registre est le dossier
161
-`data/`. Il est important de ne pas toucher à ce dossier. Également le dossier
162
-`nginx/` qui contient la configuration nginx (par exemple pour
163
-l'authentification).
159
+`data/`. Il est important de ne pas toucher à ce dossier.
160
+
161
+On trouve également le dossier `auth/` qui contient le fichier `registry.passwd`
162
+Pour générer les mots de passe dans ce dernier, nous pouvons utiliser
163
+```bash
164
+htpasswd -Bc registry.password username
165
+```
166
+Typiquement avec comme `username`, `resel` et comme mot de passe, le mot de passe magique.
164 167
165 168
Pour installer/démarrer le service rien de plus simple :
166 169
... ...
@@ -174,6 +177,38 @@ docker-compose up -d
174 177
175 178
N'oubliez pas de configurer le reverse proxy si vous désirez pouvoir accéder au
176 179
registre depuis l'extérieur.
180
+
181
+Sur [Situs, le reverse proxy admin](serveurs/situs), dans la configuration de nginx,
182
+nous pouvons trouver la configuration de la registry Docker :
183
+
184
+````yaml
185
+server {
186
+ listen 80;
187
+ server_name docker.resel.fr;
188
+
189
+ return 301 https://$server_name$request_uri;
190
+}
191
+
192
+server {
193
+ listen 443 ssl;
194
+ server_name docker.resel.fr;
195
+
196
+ access_log /var/log/nginx/docker.resel.fr.access.log;
197
+ error_log /var/log/nginx/docker.resel.fr.errors.log error;
198
+
199
+ client_max_body_size 0;
200
+ chunked_transfer_encoding on;
201
+
202
+ location / {
203
+ proxy_pass http://whitewhale.adm.resel.fr:5000;
204
+ proxy_set_header Host $http_host; # required for docker client's sake
205
+ proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
206
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
207
+ proxy_set_header X-Forwarded-Proto $scheme;
208
+ proxy_read_timeout 900;
209
+ }
210
+}
211
+```
177 212
178 213
Pour permettre à docker d'accéder aux registries publics, il faut paramétrer le proxy ici : https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
179 214
... ...
@@ -266,7 +301,7 @@ docker exec dockerregistry_registry_1 /bin/registry garbage-collect /data/garbag
266 301
* [Docker + Ansible](https://docs.docker.com/engine/admin/ansible)
267 302
268 303
# Articles liés
269
-* [Serveur Mobydick](Serveurs/Mobydick)
304
+* [Serveur Whitewhale](Serveurs/Whitewhale)
270 305
271 306
272 307
# TODO (rédacteur)