8b56f9c48c1bb9716091df61738ebb92c36d33ef
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) |