e5b9ada63b11df66a9f0313644d87a271991eeb8
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 |