Ident samples
This commit is contained in:
parent
6184c0bf3d
commit
02db9cc19c
47 changed files with 2658 additions and 213 deletions
|
@ -21,10 +21,10 @@ cours d'exécution, arrêtés, ...) avec la commande suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ docker container ls -a
|
42sh$ docker container ls -a
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
|
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
|
||||||
552d71619723 hello-world "/hello" 4 days ago Exited (0) 4 days ago dreamy_gates
|
552d71619723 hello-world "/hello" 4 days ago Exited (0) 4 days ago dreamy_gates
|
||||||
0e8bbff6d500 debian "/bin/bash" 2 weeks ago Exited (0) 2 weeks ago cranky_jones
|
0e8bbff6d500 debian "/bin/bash" 2 weeks ago Exited (0) 2 weeks ago cranky_jones
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ conteneurs. Pour les supprimer, utilisez la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container rm 0e8bbff6d500 552d71619723
|
docker container rm 0e8bbff6d500 552d71619723
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ ou encore :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container rm cranky_jones dreamy_gates
|
docker container rm cranky_jones dreamy_gates
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Nous pouvons télécharger et lancer le service grâce à :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -i nemunaire/youp0m
|
docker container run -i nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ Nous pouvons rediriger le port avec l'argument <span lang="en-US">`-p dst_host:s
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -i -p 8080:8080 nemunaire/youp0m
|
docker container run -i -p 8080:8080 nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ utiliser cette syntaxe pour ajouter une image :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
base64 monimage.jpg | curl --data @- http://localhost:8080/api/images/monimage
|
base64 monimage.jpg | curl --data @- http://localhost:8080/api/images/monimage
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -55,10 +55,10 @@ Si vous n'êtes pas particulièrement inspiré, vous pouvez ajouter ces images :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
wget -O- https://you.p0m.fr/images/lynx4 | base64 | curl --data @- http://localhost:8080/api/images/lynx
|
wget -O- https://you.p0m.fr/images/lynx4 | base64 | curl --data @- http://localhost:8080/api/images/lynx
|
||||||
wget -O- https://you.p0m.fr/images/otters | base64 | curl --data @- http://localhost:8080/api/images/otters
|
wget -O- https://you.p0m.fr/images/otters | base64 | curl --data @- http://localhost:8080/api/images/otters
|
||||||
wget -O- https://you.p0m.fr/images/DNcrZ6u | base64 | curl --data @- http://localhost:8080/api/images/DNcrZ6u
|
wget -O- https://you.p0m.fr/images/DNcrZ6u | base64 | curl --data @- http://localhost:8080/api/images/DNcrZ6u
|
||||||
wget -O- https://you.p0m.fr/images/raccoons | base64 | curl --data @- http://localhost:8080/api/images/raccoons
|
wget -O- https://you.p0m.fr/images/raccoons | base64 | curl --data @- http://localhost:8080/api/images/raccoons
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ On utilise l'option `-d` pour lancer le conteneur en tâche de fond :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -d -p 8080:8080 nemunaire/youp0m
|
docker container run -d -p 8080:8080 nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ service (en fait, les sorties standard et d'erreur) :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container logs 0123456789abcdef
|
docker container logs 0123456789abcdef
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ il s'agit des mêmes options :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -d -p 8080:8081 nemunaire/youp0m
|
docker container run -d -p 8080:8081 nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ son identifiant dans la commande suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container stop 0123456789abcdef
|
docker container stop 0123456789abcdef
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ conteneur avec la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run hello-world
|
docker container run hello-world
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Nous pouvons directement utiliser le client pour rechercher une image sur le
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker search mariadb
|
docker search mariadb
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ pré-télécharger des images depuis le Store en utilisant la commande `pull` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker image pull ubuntu
|
docker image pull ubuntu
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ nous-même), on utilise la commande `ls` sous le type d'objets `image` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker image ls
|
docker image ls
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ un Hello World :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run ubuntu /bin/echo "Hello World"
|
docker container run ubuntu /bin/echo "Hello World"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ tenter d'utiliser son gestionnaire de paquet `apk`, via :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run alpine /sbin/apk stats
|
docker container run alpine /sbin/apk stats
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ commande peut prendre des paramètres :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker DOCKER_PARAMS container run RUN_OPTS image IMAGE_CMD IMAGE_ARGS ...
|
docker DOCKER_PARAMS container run RUN_OPTS image IMAGE_CMD IMAGE_ARGS ...
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ Par exemple :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker -H unix:///var/run/docker.sock container run -it alpine /bin/ash -c "echo foo"
|
docker -H unix:///var/run/docker.sock container run -it alpine /bin/ash -c "echo foo"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -167,10 +167,10 @@ sans quoi `bash` ne se lancera pas en mode interractif[^bashnointer].
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ cat cmd
|
42sh$ cat cmd
|
||||||
echo foo
|
echo foo
|
||||||
42sh$ cat cmd | docker run -i busybox
|
42sh$ cat cmd | docker run -i busybox
|
||||||
foo
|
foo
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -186,9 +186,9 @@ conteneurs en cours d'exécution :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ docker container ls
|
42sh$ docker container ls
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes suspicious_galileo
|
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes suspicious_galileo
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Avant de continuer, assurez-vous que votre machine a bien démarré sur un noyau
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
x86_64
|
x86_64
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Assurez-vous également d'avoir un noyau récent, avec la commande `uname -r` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
4.18.11-gentoo
|
4.18.11-gentoo
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Vous devriez maintenant être capable de lancer la commande suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker version
|
docker version
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -91,24 +91,24 @@ Une sortie similaire au bloc suivant devrait apparaître sur votre écran :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
Client:
|
Client:
|
||||||
Version: 18.06.1-ce
|
Version: 18.06.1-ce
|
||||||
API version: 1.38
|
API version: 1.38
|
||||||
Go version: go1.10.3
|
Go version: go1.10.3
|
||||||
Git commit: e68fc7a
|
Git commit: e68fc7a
|
||||||
Built: Sun Sep 9 10:14:56 2018
|
Built: Sun Sep 9 10:14:56 2018
|
||||||
OS/Arch: linux/amd64
|
OS/Arch: linux/amd64
|
||||||
Experimental: false
|
Experimental: false
|
||||||
|
|
||||||
Server:
|
Server:
|
||||||
Engine:
|
Engine:
|
||||||
Version: 18.06.1-ce
|
Version: 18.06.1-ce
|
||||||
API version: 1.38 (minimum version 1.12)
|
API version: 1.38 (minimum version 1.12)
|
||||||
Go version: go1.10.3
|
Go version: go1.10.3
|
||||||
Git commit: e68fc7a
|
Git commit: e68fc7a
|
||||||
Built: Sun Sep 9 10:13:21 2018
|
Built: Sun Sep 9 10:13:21 2018
|
||||||
OS/Arch: linux/amd64
|
OS/Arch: linux/amd64
|
||||||
Experimental: true
|
Experimental: true
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ directory.`, le deamon n'est sans doute pas lancé. Lancez-le :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
sudo service docker restart
|
sudo service docker restart
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ session** :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
sudo gpasswd -a $USER docker
|
sudo gpasswd -a $USER docker
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,11 @@ leur pilote. Pour consulter la liste de réseaux utilisables, lancez :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ docker network ls
|
42sh$ docker network ls
|
||||||
NETWORK ID NAME DRIVER SCOPE
|
NETWORK ID NAME DRIVER SCOPE
|
||||||
74cedd3ff385 bridge bridge local
|
74cedd3ff385 bridge bridge local
|
||||||
d5d907add6e2 host host local
|
d5d907add6e2 host host local
|
||||||
16b702ed01a0 none null local
|
16b702ed01a0 none null local
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ relatives aux objets Docker `network` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker network create --driver bridge my_fic
|
docker network create --driver bridge my_fic
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ réseau :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker network connect NETWORK CONTAINER
|
docker network connect NETWORK CONTAINER
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ obtiendrez en lisant l'aide :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run --rm -e MYSQL_HOST="tcp(mysql_cntr_name:3306)" nemunaire/fic-admin -help
|
docker container run --rm -e MYSQL_HOST="tcp(mysql_cntr_name:3306)" nemunaire/fic-admin -help
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -126,8 +126,8 @@ utilisant :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ docker container exec -it ficadmin_cntr_name /bin/bash
|
42sh$ docker container exec -it ficadmin_cntr_name /bin/bash
|
||||||
(incntnr)# ping mysql_cntr_name
|
(incntnr)# ping mysql_cntr_name
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -39,12 +39,12 @@ a pu voir durant ce premier cours.
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ ./mycloud-run.sh
|
42sh$ ./mycloud-run.sh
|
||||||
http://localhost:12345/
|
http://localhost:12345/
|
||||||
42sh$ #docker kill db
|
42sh$ #docker kill db
|
||||||
42sh$ ./mycloud-run.sh # le script relancera une base de données,
|
42sh$ ./mycloud-run.sh # le script relancera une base de données,
|
||||||
# sans avoir perdu les données
|
# sans avoir perdu les données
|
||||||
http://localhost:12345/
|
http://localhost:12345/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -73,8 +73,8 @@ Voici une arborescence type:
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
login_x-TP1/
|
login_x-TP1/
|
||||||
login_x-TP1/mycloud-run.sh
|
login_x-TP1/mycloud-run.sh
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -110,12 +110,12 @@ Si vous recevez un rapport avec l'erreur suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
[FAIL] Bad signature. Here is the gnupg output:
|
[FAIL] Bad signature. Here is the gnupg output:
|
||||||
|
|
||||||
gpg: Signature made Tue Jan 01 16:42:23 2014 CET
|
gpg: Signature made Tue Jan 01 16:42:23 2014 CET
|
||||||
gpg: using RSA key 842807A84573CC96
|
gpg: using RSA key 842807A84573CC96
|
||||||
gpg: requesting key E2CCD99DD37BD32E from hkp server pool.sks-keyservers.net
|
gpg: requesting key E2CCD99DD37BD32E from hkp server pool.sks-keyservers.net
|
||||||
gpg: Can't check signature: No public key
|
gpg: Can't check signature: No public key
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ Si vous recevez un rapport avec l'erreur suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
[FAIL] The username of your key is not explicit, I can't find you.
|
[FAIL] The username of your key is not explicit, I can't find you.
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ Si vous recevez un rapport concluant ainsi :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
After analyzing your e-mail, I've decided to SKIP it.
|
After analyzing your e-mail, I've decided to SKIP it.
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ serveur web :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run --rm -p 80:80 -v ~/Downloads:/usr/share/nginx/html:ro -d nginx
|
docker container run --rm -p 80:80 -v ~/Downloads:/usr/share/nginx/html:ro -d nginx
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -49,8 +49,8 @@ volume :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker volume create prod_youp0m
|
docker volume create prod_youp0m
|
||||||
docker volume create prod_foodp0m
|
docker volume create prod_foodp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ Ensuite, nous pouvons démarrer un conteneur utilisant, par exemple :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run --mount source=prod_youp0m,target=/srv/images nemunaire/youp0m
|
docker container run --mount source=prod_youp0m,target=/srv/images nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -66,8 +66,8 @@ On pourra également faire de même avec un conteneur MySQL :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run --name mydb --mount source=prod_db,target=/var/lib/mysql \
|
docker container run --name mydb --mount source=prod_db,target=/var/lib/mysql \
|
||||||
-e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
|
-e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ sauvegardes, vous pourriez le lancer comme ceci :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -it --volume-from mydb busybox /bin/bash
|
docker container run -it --volume-from mydb busybox /bin/bash
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ exclusivement en RAM :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run --mount type=tmpfs,target=/srv/images nemunaire/youp0m
|
docker container run --mount type=tmpfs,target=/srv/images nemunaire/youp0m
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
BIN
tutorial/docker-orchestration/disp/aufs_layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/aufs_layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
BIN
tutorial/docker-orchestration/disp/base_device.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/base_device.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
BIN
tutorial/docker-orchestration/disp/container-layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/container-layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
BIN
tutorial/docker-orchestration/disp/image-layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/image-layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
57
tutorial/docker-orchestration/disp/index.html
Normal file
57
tutorial/docker-orchestration/disp/index.html
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>Docker layers</title>
|
||||||
|
<style>
|
||||||
|
body { background: white; text-align: center; }
|
||||||
|
table { width: 100%; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Difference image/container</h1>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img src="image-layers.jpg" alt="Image layers">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<img src="container-layers.jpg" alt="Container layers">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr>
|
||||||
|
<h1>Block Device <em>Union</em></h1>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img src="base_device.jpg" alt="Base device">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<img src="two_dm_container.jpg" alt="Base device">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr>
|
||||||
|
<h1>Filesystem UnionFS</h1>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<figure>
|
||||||
|
<img src="aufs_layers.jpg" alt="AUFS layers">
|
||||||
|
<figcaption>AUFS</figcaption>
|
||||||
|
</figure>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<figure>
|
||||||
|
<img src="overlay_constructs.jpg" alt="AUFS layers">
|
||||||
|
<figcaption>OverlayFS</figcaption>
|
||||||
|
</figure>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<p style="text-align: left">
|
||||||
|
Images from <a href="https://docs.docker.com/">docs.docker.com</a>.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
tutorial/docker-orchestration/disp/overlay_constructs.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/overlay_constructs.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
BIN
tutorial/docker-orchestration/disp/two_dm_container.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/two_dm_container.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
|
@ -56,7 +56,7 @@ leur nom vous permettra par exemple de relancer une machine plus tard) :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker-machine create --driver virtualbox echinoidea
|
docker-machine create --driver virtualbox echinoidea
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -82,13 +82,13 @@ changer de daamon/machine avec une simple commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
$ docker container ls
|
$ docker container ls
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||||
$ eval $(docker-machine env echinoidea)
|
$ eval $(docker-machine env echinoidea)
|
||||||
$ docker container ls -a
|
$ docker container ls -a
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||||
a814293b9f45 armbuild/busybox "/bin/sh" 18 seconds ago Up 10 minutes
|
a814293b9f45 armbuild/busybox "/bin/sh" 18 seconds ago Up 10 minutes
|
||||||
0caddeed5037 armbuild/alpine "/bin/sh" 2 weeks ago Created
|
0caddeed5037 armbuild/alpine "/bin/sh" 2 weeks ago Created
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -142,9 +142,9 @@ virtuelle écoute :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
(virt1) 42sh$ netstat -tpln | grep dockerd
|
(virt1) 42sh$ netstat -tpln | grep dockerd
|
||||||
Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
|
Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
|
||||||
tcp 0 0 :::2376 :::* 980/dockerd
|
tcp 0 0 :::2376 :::* 980/dockerd
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -152,9 +152,9 @@ Essayons de renseigner simplement cette configuration à notre client Docker :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
(main) 42sh$ docker -H tcp://$VM1_IP:2376/ info
|
(main) 42sh$ docker -H tcp://$VM1_IP:2376/ info
|
||||||
Get http://$VM1_IP:2376/v1.32/info: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
|
Get http://$VM1_IP:2376/v1.32/info: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
|
||||||
* Are you trying to connect to a TLS-enabled daemon without TLS?
|
* Are you trying to connect to a TLS-enabled daemon without TLS?
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -174,11 +174,11 @@ nous n'avons qu'à recopier la clef et les certificats en place.
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
(main) 42sh$ mkdir remote/virt1
|
(main) 42sh$ mkdir remote/virt1
|
||||||
(main) 42sh$ scp "docker@$VM1_IP:.docker/*" remote/virt1
|
(main) 42sh$ scp "docker@$VM1_IP:.docker/*" remote/virt1
|
||||||
ca.pem
|
ca.pem
|
||||||
cert.pem
|
cert.pem
|
||||||
key.pem
|
key.pem
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ Tentons maintenant de nous connecter au daemon distant en utilisant ces élémen
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ DOCKER_CERT_PATH=remote/virt1/ docker -H tcp://$VM1_IP:2376/ --tlsverify info
|
42sh$ DOCKER_CERT_PATH=remote/virt1/ docker -H tcp://$VM1_IP:2376/ --tlsverify info
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
15
tutorial/docker-orchestration/misc/chronograf/Dockerfile
Normal file
15
tutorial/docker-orchestration/misc/chronograf/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM debian
|
||||||
|
|
||||||
|
ENV CHRONOGRAF_VERSION 1.0.0
|
||||||
|
RUN apt-get update && apt-get install -y wget && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||||
|
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
dpkg -i chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
rm -f chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||||
|
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||||
|
|
||||||
|
EXPOSE 10000
|
||||||
|
|
||||||
|
VOLUME /var/lib/chronograf
|
||||||
|
|
||||||
|
CMD ["/opt/chronograf/chronograf"]
|
|
@ -0,0 +1,2 @@
|
||||||
|
Bind="0.0.0.0:10000"
|
||||||
|
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
31
tutorial/docker-orchestration/misc/docker-compose-std.yml
Normal file
31
tutorial/docker-orchestration/misc/docker-compose-std.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
influxdb:
|
||||||
|
build: influxdb
|
||||||
|
ports:
|
||||||
|
- "8083:8083"
|
||||||
|
- "8086:8086"
|
||||||
|
volumes:
|
||||||
|
- influx-data:/var/lib/influxdb
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
|
||||||
|
chronograf:
|
||||||
|
build: chronograf
|
||||||
|
ports:
|
||||||
|
- "10000:10000"
|
||||||
|
volumes:
|
||||||
|
- chronograf-data:/var/lib/chronograf
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
influx-data:
|
||||||
|
driver: local
|
||||||
|
chronograf-data:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
influx:
|
||||||
|
driver: bridge
|
98
tutorial/docker-orchestration/misc/docker-compose-tick.yml
Normal file
98
tutorial/docker-orchestration/misc/docker-compose-tick.yml
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
# FRONT
|
||||||
|
chronograf:
|
||||||
|
# Full tag list: https://hub.docker.com/r/library/chronograf/tags/
|
||||||
|
image: chronograf
|
||||||
|
deploy:
|
||||||
|
replicas: 3
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- node.role == manager
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
environment:
|
||||||
|
INFLUXDB_URL: http://influxdb:8086
|
||||||
|
KAPACITOR_URL: http://kapacitor:9092
|
||||||
|
volumes:
|
||||||
|
# Mount for chronograf database
|
||||||
|
- chronograf-data:/var/lib/chronograf
|
||||||
|
ports:
|
||||||
|
# The WebUI for Chronograf is served on port 8888
|
||||||
|
- "8888:8888"
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
depends_on:
|
||||||
|
- kapacitor
|
||||||
|
- influxdb
|
||||||
|
# MIDDLE
|
||||||
|
kapacitor:
|
||||||
|
# Full tag list: https://hub.docker.com/r/library/kapacitor/tags/
|
||||||
|
image: kapacitor
|
||||||
|
deploy:
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- node.role == manager
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
environment:
|
||||||
|
HOSTNAME: kapacitor
|
||||||
|
KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:8086
|
||||||
|
volumes:
|
||||||
|
# Mount for kapacitor data directory
|
||||||
|
- kapacitor-data:/var/lib/kapacitor
|
||||||
|
# Mount for kapacitor configuration
|
||||||
|
#- /etc/kapacitor/config:/etc/kapacitor
|
||||||
|
ports:
|
||||||
|
# The API for Kapacitor is served on port 9092
|
||||||
|
- "9092:9092"
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
depends_on:
|
||||||
|
- influxdb
|
||||||
|
# BACK
|
||||||
|
telegraf:
|
||||||
|
# Full tag list: https://hub.docker.com/r/library/telegraf/tags/
|
||||||
|
image: telegraf
|
||||||
|
deploy:
|
||||||
|
mode: global
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
volumes:
|
||||||
|
# Mount for telegraf configuration
|
||||||
|
- ./telegraf.conf:/etc/telegraf/telegraf.conf
|
||||||
|
# Mount for Docker API access
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
depends_on:
|
||||||
|
- influxdb
|
||||||
|
# DATABASE
|
||||||
|
influxdb:
|
||||||
|
# Full tag list: https://hub.docker.com/r/library/influxdb/tags/
|
||||||
|
image: influxdb
|
||||||
|
deploy:
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- node.role == manager
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
volumes:
|
||||||
|
# Mount for influxdb data directory
|
||||||
|
- influxdb-data:/var/lib/influxdb
|
||||||
|
# Mount for influxdb configuration
|
||||||
|
#- /etc/influxdb/config:/etc/influxdb
|
||||||
|
ports:
|
||||||
|
# The API for InfluxDB is served on port 8086
|
||||||
|
- "8086:8086"
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
networks:
|
||||||
|
influx:
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
chronograf-data:
|
||||||
|
kapacitor-data:
|
||||||
|
influxdb-data:
|
35
tutorial/docker-orchestration/misc/docker-compose.yml
Normal file
35
tutorial/docker-orchestration/misc/docker-compose.yml
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
influxdb:
|
||||||
|
image: influxdb
|
||||||
|
ports:
|
||||||
|
- "8083:8083"
|
||||||
|
- "8086:8086"
|
||||||
|
volumes:
|
||||||
|
- influx-data:/var/lib/influxdb
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
|
||||||
|
chronograf:
|
||||||
|
image: chronograf
|
||||||
|
ports:
|
||||||
|
- "8888:8888"
|
||||||
|
environment:
|
||||||
|
INFLUXDB_URL: http://influxdb:8086
|
||||||
|
KAPACITOR_URL: http://kapacitor:9092
|
||||||
|
volumes:
|
||||||
|
- chronograf-data:/var/lib/chronograf
|
||||||
|
networks:
|
||||||
|
- influx
|
||||||
|
depends_on:
|
||||||
|
- influxdb
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
influx-data:
|
||||||
|
driver: local
|
||||||
|
chronograf-data:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
influx:
|
15
tutorial/docker-orchestration/misc/influxdb/Dockerfile
Normal file
15
tutorial/docker-orchestration/misc/influxdb/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM debian
|
||||||
|
|
||||||
|
ENV INFLUXDB_VERSION 1.0.0
|
||||||
|
RUN apt-get update && apt-get install -y wget && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||||
|
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||||
|
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||||
|
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb
|
||||||
|
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||||
|
|
||||||
|
EXPOSE 8083 8086
|
||||||
|
|
||||||
|
VOLUME /var/lib/influxdb
|
||||||
|
|
||||||
|
CMD ["influxd"]
|
10
tutorial/docker-orchestration/misc/influxdb/influxdb.conf
Normal file
10
tutorial/docker-orchestration/misc/influxdb/influxdb.conf
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[meta]
|
||||||
|
dir = "/var/lib/influxdb/meta"
|
||||||
|
|
||||||
|
[data]
|
||||||
|
dir = "/var/lib/influxdb/data"
|
||||||
|
engine = "tsm1"
|
||||||
|
wal-dir = "/var/lib/influxdb/wal"
|
||||||
|
|
||||||
|
[admin]
|
||||||
|
enabled = true
|
|
@ -0,0 +1,22 @@
|
||||||
|
FROM debian
|
||||||
|
|
||||||
|
ENV INFLUXDB_VERSION 1.0.0
|
||||||
|
ENV CHRONOGRAF_VERSION 1.0.0
|
||||||
|
RUN apt-get update && apt-get install -y wget supervisor && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||||
|
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||||
|
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||||
|
|
||||||
|
EXPOSE 8083 8086 10000
|
||||||
|
|
||||||
|
VOLUME /var/lib/influxdb
|
||||||
|
VOLUME /var/lib/chronograf
|
||||||
|
|
||||||
|
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||||
|
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||||
|
|
||||||
|
COPY supervisor.conf /etc/supervisor/conf.d/supervisord.conf
|
||||||
|
|
||||||
|
CMD ["/usr/bin/supervisord"]
|
|
@ -0,0 +1,2 @@
|
||||||
|
Bind="0.0.0.0:10000"
|
||||||
|
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
|
@ -0,0 +1,10 @@
|
||||||
|
[meta]
|
||||||
|
dir = "/var/lib/influxdb/meta"
|
||||||
|
|
||||||
|
[data]
|
||||||
|
dir = "/var/lib/influxdb/data"
|
||||||
|
engine = "tsm1"
|
||||||
|
wal-dir = "/var/lib/influxdb/wal"
|
||||||
|
|
||||||
|
[admin]
|
||||||
|
enabled = true
|
|
@ -0,0 +1,8 @@
|
||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
|
||||||
|
[program:influxdb]
|
||||||
|
command=/usr/bin/influxd
|
||||||
|
|
||||||
|
[program:chronograf]
|
||||||
|
command=/opt/chronograf/chronograf
|
|
@ -0,0 +1,23 @@
|
||||||
|
FROM debian
|
||||||
|
|
||||||
|
ENV INFLUXDB_VERSION 1.0.0
|
||||||
|
ENV CHRONOGRAF_VERSION 1.0.0
|
||||||
|
RUN apt-get update && apt-get install -y wget && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||||
|
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||||
|
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||||
|
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||||
|
|
||||||
|
EXPOSE 8083 8086 10000
|
||||||
|
|
||||||
|
VOLUME /var/lib/influxdb
|
||||||
|
VOLUME /var/lib/chronograf
|
||||||
|
|
||||||
|
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||||
|
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||||
|
|
||||||
|
# start.sh should already be executable
|
||||||
|
COPY start.sh /usr/bin/start.sh
|
||||||
|
|
||||||
|
CMD ["start.sh"]
|
|
@ -0,0 +1,2 @@
|
||||||
|
Bind="0.0.0.0:10000"
|
||||||
|
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
|
@ -0,0 +1,10 @@
|
||||||
|
[meta]
|
||||||
|
dir = "/var/lib/influxdb/meta"
|
||||||
|
|
||||||
|
[data]
|
||||||
|
dir = "/var/lib/influxdb/data"
|
||||||
|
engine = "tsm1"
|
||||||
|
wal-dir = "/var/lib/influxdb/wal"
|
||||||
|
|
||||||
|
[admin]
|
||||||
|
enabled = true
|
9
tutorial/docker-orchestration/misc/mymonitoring-wait/start.sh
Executable file
9
tutorial/docker-orchestration/misc/mymonitoring-wait/start.sh
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
influxd &
|
||||||
|
WAIT=$!
|
||||||
|
|
||||||
|
/opt/chronograf/chronograf &
|
||||||
|
WAIT="${WAIT} $!"
|
||||||
|
|
||||||
|
wait ${WAIT}
|
24
tutorial/docker-orchestration/misc/proj/docker-compose.yml
Normal file
24
tutorial/docker-orchestration/misc/proj/docker-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
image: nginx
|
||||||
|
ports:
|
||||||
|
- "80:8080"
|
||||||
|
networks:
|
||||||
|
- ha
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql
|
||||||
|
volumes:
|
||||||
|
- mysql-data:/var/lib/mysql
|
||||||
|
networks:
|
||||||
|
- ha
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql-data:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
ha:
|
||||||
|
driver: bridge
|
3
tutorial/docker-orchestration/misc/telegraf.conf
Normal file
3
tutorial/docker-orchestration/misc/telegraf.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[[outputs.influxdb]]
|
||||||
|
urls = ["http://influxdb:8086"] # required
|
||||||
|
database = "telegraf" # required
|
|
@ -0,0 +1,11 @@
|
||||||
|
/var/log/telegraf/telegraf.log
|
||||||
|
{
|
||||||
|
rotate 6
|
||||||
|
daily
|
||||||
|
missingok
|
||||||
|
dateext
|
||||||
|
copytruncate
|
||||||
|
notifempty
|
||||||
|
compress
|
||||||
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
BIN
tutorial/docker-orchestration/misc/telegraf/usr/bin/telegraf
Executable file
BIN
tutorial/docker-orchestration/misc/telegraf/usr/bin/telegraf
Executable file
Binary file not shown.
|
@ -0,0 +1,208 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
# chkconfig: 2345 99 01
|
||||||
|
# description: Telegraf daemon
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: telegraf
|
||||||
|
# Required-Start: $all
|
||||||
|
# Required-Stop: $remote_fs $syslog
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start telegraf at boot time
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
# this init script supports three different variations:
|
||||||
|
# 1. New lsb that define start-stop-daemon
|
||||||
|
# 2. Old lsb that don't have start-stop-daemon but define, log, pidofproc and killproc
|
||||||
|
# 3. Centos installations without lsb-core installed
|
||||||
|
#
|
||||||
|
# In the third case we have to define our own functions which are very dumb
|
||||||
|
# and expect the args to be positioned correctly.
|
||||||
|
|
||||||
|
# Command-line options that can be set in /etc/default/telegraf. These will override
|
||||||
|
# any config file values.
|
||||||
|
TELEGRAF_OPTS=
|
||||||
|
|
||||||
|
USER=telegraf
|
||||||
|
GROUP=telegraf
|
||||||
|
|
||||||
|
if [ -r /lib/lsb/init-functions ]; then
|
||||||
|
source /lib/lsb/init-functions
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEFAULT=/etc/default/telegraf
|
||||||
|
|
||||||
|
if [ -r $DEFAULT ]; then
|
||||||
|
source $DEFAULT
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$STDOUT" ]; then
|
||||||
|
STDOUT=/dev/null
|
||||||
|
fi
|
||||||
|
if [ ! -f "$STDOUT" ]; then
|
||||||
|
mkdir -p `dirname $STDOUT`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$STDERR" ]; then
|
||||||
|
STDERR=/var/log/telegraf/telegraf.log
|
||||||
|
fi
|
||||||
|
if [ ! -f "$STDERR" ]; then
|
||||||
|
mkdir -p `dirname $STDERR`
|
||||||
|
fi
|
||||||
|
|
||||||
|
OPEN_FILE_LIMIT=65536
|
||||||
|
|
||||||
|
function pidofproc() {
|
||||||
|
if [ $# -ne 3 ]; then
|
||||||
|
echo "Expected three arguments, e.g. $0 -p pidfile daemon-name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$2" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local pidfile=`cat $2`
|
||||||
|
|
||||||
|
if [ "x$pidfile" == "x" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ps --pid "$pidfile" | grep -q $(basename $3); then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function killproc() {
|
||||||
|
if [ $# -ne 3 ]; then
|
||||||
|
echo "Expected three arguments, e.g. $0 -p pidfile signal"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pid=`cat $2`
|
||||||
|
|
||||||
|
kill -s $3 $pid
|
||||||
|
}
|
||||||
|
|
||||||
|
function log_failure_msg() {
|
||||||
|
echo "$@" "[ FAILED ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
function log_success_msg() {
|
||||||
|
echo "$@" "[ OK ]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process name ( For display )
|
||||||
|
name=telegraf
|
||||||
|
|
||||||
|
# Daemon name, where is the actual executable
|
||||||
|
daemon=/usr/bin/telegraf
|
||||||
|
|
||||||
|
# pid file for the daemon
|
||||||
|
pidfile=/var/run/telegraf/telegraf.pid
|
||||||
|
piddir=`dirname $pidfile`
|
||||||
|
|
||||||
|
if [ ! -d "$piddir" ]; then
|
||||||
|
mkdir -p $piddir
|
||||||
|
chown $USER:$GROUP $piddir
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configuration file
|
||||||
|
config=/etc/telegraf/telegraf.conf
|
||||||
|
confdir=/etc/telegraf/telegraf.d
|
||||||
|
|
||||||
|
# If the daemon is not there, then exit.
|
||||||
|
[ -x $daemon ] || exit 5
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
start)
|
||||||
|
# Checked the PID file exists and check the actual status of process
|
||||||
|
if [ -e $pidfile ]; then
|
||||||
|
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||||
|
# If the status is SUCCESS then don't need to start again.
|
||||||
|
if [ "x$status" = "x0" ]; then
|
||||||
|
log_failure_msg "$name process is running"
|
||||||
|
exit 0 # Exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Bump the file limits, before launching the daemon. These will carry over to
|
||||||
|
# launched processes.
|
||||||
|
ulimit -n $OPEN_FILE_LIMIT
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_failure_msg "set open file limit to $OPEN_FILE_LIMIT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success_msg "Starting the process" "$name"
|
||||||
|
if which start-stop-daemon > /dev/null 2>&1; then
|
||||||
|
start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile $pidfile --exec $daemon -- -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &
|
||||||
|
else
|
||||||
|
su -s /bin/sh -c "nohup $daemon -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &" $USER
|
||||||
|
fi
|
||||||
|
log_success_msg "$name process was started"
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
# Stop the daemon.
|
||||||
|
if [ -e $pidfile ]; then
|
||||||
|
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||||
|
if [ "$status" = 0 ]; then
|
||||||
|
if killproc -p $pidfile SIGTERM && /bin/rm -rf $pidfile; then
|
||||||
|
log_success_msg "$name process was stopped"
|
||||||
|
else
|
||||||
|
log_failure_msg "$name failed to stop service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_failure_msg "$name process is not running"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
reload)
|
||||||
|
# Reload the daemon.
|
||||||
|
if [ -e $pidfile ]; then
|
||||||
|
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||||
|
if [ "$status" = 0 ]; then
|
||||||
|
if killproc -p $pidfile SIGHUP; then
|
||||||
|
log_success_msg "$name process was reloaded"
|
||||||
|
else
|
||||||
|
log_failure_msg "$name failed to reload service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_failure_msg "$name process is not running"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart)
|
||||||
|
# Restart the daemon.
|
||||||
|
$0 stop && sleep 2 && $0 start
|
||||||
|
;;
|
||||||
|
|
||||||
|
status)
|
||||||
|
# Check the status of the process.
|
||||||
|
if [ -e $pidfile ]; then
|
||||||
|
if pidofproc -p $pidfile $daemon > /dev/null; then
|
||||||
|
log_success_msg "$name Process is running"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
log_failure_msg "$name Process is not running"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_failure_msg "$name Process is not running"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
version)
|
||||||
|
$daemon version
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# For invalid arguments, print the usage message.
|
||||||
|
echo "Usage: $0 {start|stop|restart|status|version}"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,17 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The plugin-driven server agent for reporting metrics into InfluxDB
|
||||||
|
Documentation=https://github.com/influxdata/telegraf
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=-/etc/default/telegraf
|
||||||
|
User=telegraf
|
||||||
|
Environment='STDOUT=/var/log/telegraf/telegraf.log'
|
||||||
|
Environment='STDERR=/var/log/telegraf/telegraf.log'
|
||||||
|
ExecStart=/bin/sh -c "exec /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d ${TELEGRAF_OPTS} >>${STDOUT} 2>>${STDERR}"
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
Restart=on-failure
|
||||||
|
KillMode=control-group
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -27,14 +27,14 @@ un serveur web, qui sera bien plus représentatif de ce que l'on pourra obtenir.
|
||||||
Précédemment, nous lancions notre serveur web favori avec :
|
Précédemment, nous lancions notre serveur web favori avec :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker container run --name mywebs -d nginx
|
docker container run --name mywebs -d nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
|
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
|
||||||
*workers*, est :
|
*workers*, est :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker service create --name myWebS nginx
|
docker service create --name myWebS nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Allons-y, essayons !
|
Allons-y, essayons !
|
||||||
|
@ -42,9 +42,9 @@ Allons-y, essayons !
|
||||||
On peut consulter l'état du service avec, comme d'habitude `ls` :
|
On peut consulter l'état du service avec, comme d'habitude `ls` :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
42sh$ docker service ls
|
42sh$ docker service ls
|
||||||
ID NAME MODE REPLICAS IMAGE PORTS
|
ID NAME MODE REPLICAS IMAGE PORTS
|
||||||
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
|
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
|
||||||
|
@ -56,7 +56,7 @@ Rien de très excitant pour le moment, car nous ne pouvons pas vraiment accéder
|
||||||
d'ajouter une redirection de port :
|
d'ajouter une redirection de port :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker service update --publish-add 80 myWebS
|
docker service update --publish-add 80 myWebS
|
||||||
```
|
```
|
||||||
|
|
||||||
À chaque modification de configuration, les conteneurs lancés au sein du
|
À chaque modification de configuration, les conteneurs lancés au sein du
|
||||||
|
@ -101,13 +101,13 @@ Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici
|
||||||
:
|
:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker service update --replicas 3 myWebS
|
docker service update --replicas 3 myWebS
|
||||||
```
|
```
|
||||||
|
|
||||||
Roulement de tambours .......
|
Roulement de tambours .......
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker service ps myWebS
|
docker service ps myWebS
|
||||||
```
|
```
|
||||||
|
|
||||||
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
|
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
|
||||||
|
@ -127,7 +127,7 @@ Notre système de monitoring est une *stack* lui aussi, d'ailleurs, nous pouvons
|
||||||
la lancer grâce à notre `docker-compose.yml` :
|
la lancer grâce à notre `docker-compose.yml` :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker stack deploy --compose-file docker-compose.yml tic
|
docker stack deploy --compose-file docker-compose.yml tic
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règle de déploiement
|
### Règle de déploiement
|
||||||
|
@ -136,23 +136,23 @@ Par rapport à `docker-compose`, nous pouvons indiquer dans ce fichier des
|
||||||
paramètres qui ne serviront qu'au déploiement de notre tâche.
|
paramètres qui ne serviront qu'au déploiement de notre tâche.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
replicas: 6
|
replicas: 6
|
||||||
update_config:
|
update_config:
|
||||||
parallelism: 2
|
parallelism: 2
|
||||||
delay: 10s
|
delay: 10s
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
placement:
|
placement:
|
||||||
constraints:
|
constraints:
|
||||||
- node.role == manager
|
- node.role == manager
|
||||||
resources:
|
resources:
|
||||||
memory: 50M
|
memory: 50M
|
||||||
```
|
```
|
||||||
|
|
||||||
Certaines informations comme les ressources, permettent à l'orchestrateur de
|
Certaines informations comme les ressources, permettent à l'orchestrateur de
|
||||||
|
|
|
@ -78,7 +78,7 @@ ce n'est pas plus compliqué que de faire :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker swarm init
|
docker swarm init
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ commande, vous pouvez retrouver le jeton avec :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker swarm join-token worker
|
docker swarm join-token worker
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -120,8 +120,8 @@ utilisant `docker-machine`.
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
eval $(docker-machine env echinoidea)
|
eval $(docker-machine env echinoidea)
|
||||||
docker swarm join --token SWMTKN-1-...-... 10.10.10.42:2377
|
docker swarm join --token SWMTKN-1-...-... 10.10.10.42:2377
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -129,11 +129,11 @@ Une fois rejoint, vous devriez voir apparaître un nouveau nœud *worker* dans :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ eval $(docker-machine env -u)
|
42sh$ eval $(docker-machine env -u)
|
||||||
42sh$ docker node ls
|
42sh$ docker node ls
|
||||||
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
|
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
|
||||||
y9skzvuf989hjrkciu8mnsy echinoidea Ready Active
|
y9skzvuf989hjrkciu8mnsy echinoidea Ready Active
|
||||||
ovgh6r32kgcbswb2we48br1 * wales Ready Active Leader
|
ovgh6r32kgcbswb2we48br1 * wales Ready Active Leader
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,10 @@ que l'on a réussi à faire précédemment en utilisant le `Dockerfile` suivant
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
FROM ubuntu:latest
|
FROM ubuntu:latest
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y nano
|
RUN apt-get install -y nano
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ commande `build` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker image build --tag=my_editor .
|
docker image build --tag=my_editor .
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ constater l'existence de notre éditeur favori :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -it my_editor /bin/bash
|
docker container run -it my_editor /bin/bash
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ Cela signifie que l'exemple suivant **ne fonctionne pas** :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
COPY db.sql /db.sql
|
COPY db.sql /db.sql
|
||||||
RUN service mysqld start
|
RUN service mysqld start
|
||||||
RUN mysql -u root -p toor virli < /db.sql
|
RUN mysql -u root -p toor virli < /db.sql
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -70,8 +70,8 @@ Pour avoir le résultat escompté, il faut exécuter les commandes ensemble :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
COPY db.sql /db.sql
|
COPY db.sql /db.sql
|
||||||
RUN service mysqld start && mysql -u root -p toor virli < /db.sql
|
RUN service mysqld start && mysql -u root -p toor virli < /db.sql
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -85,12 +85,12 @@ Construisons maintenant un conteneur avec un serveur web :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
FROM my_editor
|
FROM my_editor
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y nginx
|
RUN apt-get install -y nginx
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -103,9 +103,9 @@ redirection de port aléatoire sur la machine hôte vers votre conteneur :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker image build --tag=my_webserver .
|
docker image build --tag=my_webserver .
|
||||||
docker container run -it -P my_webserver /bin/bash
|
docker container run -it -P my_webserver /bin/bash
|
||||||
service nginx start
|
service nginx start
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -125,14 +125,14 @@ si aucune commande n'est passée lors du `run`, par exemple :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
CMD nginx -g "daemon off;"
|
CMD nginx -g "daemon off;"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker image build --tag=my_nginx .
|
docker image build --tag=my_nginx .
|
||||||
docker container run -d -P my_nginx
|
docker container run -d -P my_nginx
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ Petit indice, les requêtes SQL sont les suivantes :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
DELETE FROM "data_source";
|
DELETE FROM "data_source";
|
||||||
INSERT INTO "data_source" VALUES(1,1,0,'influxdb','influx','direct','http://${}:8086/','user','pass','metrics',0,'','',0,'null','2015-10-29 09:00:00','2015-10-29 09:05:00');
|
INSERT INTO "data_source" VALUES(1,1,0,'influxdb','influx','direct','http://${}:8086/','user','pass','metrics',0,'','',0,'null','2015-10-29 09:00:00','2015-10-29 09:05:00');
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -102,10 +102,10 @@ votre InfluxDB écoute sur le port 8086 local :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
TELEGRAF_VERSION=1.8.0
|
TELEGRAF_VERSION=1.8.0
|
||||||
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
|
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
|
||||||
tar xf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
|
tar xf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
|
||||||
TELEGRAF_CONFIG_PATH=./telegraf/etc/telegraf/telegraf.conf ./telegraf/usr/bin/telegraf
|
TELEGRAF_CONFIG_PATH=./telegraf/etc/telegraf/telegraf.conf ./telegraf/usr/bin/telegraf
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -116,9 +116,9 @@ Dans l'interface sélectionnez la base `telegraf` puis explorez les valeurs :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```sql
|
```sql
|
||||||
SHOW MEASUREMENTS
|
SHOW MEASUREMENTS
|
||||||
SHOW FIELD KEYS
|
SHOW FIELD KEYS
|
||||||
SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' ORDER BY time DESC LIMIT 5
|
SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' ORDER BY time DESC LIMIT 5
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -56,9 +56,9 @@ Lorsqu'une ligne devient complexe, allez à la ligne :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
nginx \
|
nginx \
|
||||||
php5-fpm
|
php5-fpm
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -71,12 +71,12 @@ exemple :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
bzr \
|
bzr \
|
||||||
cvs \
|
cvs \
|
||||||
git \
|
git \
|
||||||
mercurial \
|
mercurial \
|
||||||
subversion
|
subversion
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -155,8 +155,8 @@ L'entrypoint peut être utilisé de deux manières différentes :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
ENTRYPOINT ["nginx"]
|
ENTRYPOINT ["nginx"]
|
||||||
CMD ["-g daemon off;"]
|
CMD ["-g daemon off;"]
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -167,20 +167,20 @@ CMD ["-g daemon off;"]
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ "$1" = 'postgres' ]; then
|
if [ "$1" = 'postgres' ]; then
|
||||||
chown -R postgres "$PGDATA"
|
chown -R postgres "$PGDATA"
|
||||||
|
|
||||||
if [ -z "$(ls -A "$PGDATA")" ]; then
|
if [ -z "$(ls -A "$PGDATA")" ]; then
|
||||||
gosu postgres initdb
|
gosu postgres initdb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec gosu postgres "$@"
|
exec gosu postgres "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Pour créer une image, commençons par entrer dans un nouveau conteneur :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -it ubuntu /bin/bash
|
docker container run -it ubuntu /bin/bash
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ pas incluses dans le conteneur.
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
apt-get update
|
apt-get update
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Installons maintenant un programme :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
apt-get install nano
|
apt-get install nano
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ autre terminal :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container ls
|
docker container ls
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ commencer directement de votre image avec `nano` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container commit CONTAINER my_nano
|
docker container commit CONTAINER my_nano
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ d'`ubuntu` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
docker container run -it my_nano /bin/bash
|
docker container run -it my_nano /bin/bash
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -25,15 +25,15 @@ cela dépendra de votre avancée dans le projet) :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
login_x-TP2/influxdb/Dockerfile
|
login_x-TP1_5/influxdb/Dockerfile
|
||||||
login_x-TP2/influxdb/influxdb.conf
|
login_x-TP1_5/influxdb/influxdb.conf
|
||||||
login_x-TP2/chronograf
|
login_x-TP1_5/chronograf
|
||||||
login_x-TP2/chronograf/Dockerfile
|
login_x-TP1_5/chronograf/Dockerfile
|
||||||
login_x-TP2/chronograf/chronograf.conf
|
login_x-TP1_5/chronograf/chronograf.conf
|
||||||
login_x-TP2/mymonitoring
|
login_x-TP1_5/mymonitoring
|
||||||
login_x-TP2/mymonitoring/Dockerfile
|
login_x-TP1_5/mymonitoring/Dockerfile
|
||||||
login_x-TP2/mymonitoring/chronograf.conf
|
login_x-TP1_5/mymonitoring/chronograf.conf
|
||||||
login_x-TP2/mymonitoring/influxdb.conf
|
login_x-TP1_5/mymonitoring/influxdb.conf
|
||||||
login_x-TP2/mymonitoring/supervisor.conf
|
login_x-TP1_5/mymonitoring/supervisor.conf
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -31,7 +31,7 @@ conteneur influxdb de la première partie est toujours lancé).
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker run --rm --link YOUR_INFLUX_CNTR_NAME:influxdb chronograf
|
docker run --rm --link YOUR_INFLUX_CNTR_NAME:influxdb chronograf
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ suivantes :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```sql
|
```sql
|
||||||
SELECT used, available, cached FROM mem WHERE tmpltime()
|
SELECT used, available, cached FROM mem WHERE tmpltime()
|
||||||
SELECT mean(usage_idle) FROM cpu WHERE tmpltime() GROUP BY time(20s), cpu
|
SELECT mean(usage_idle) FROM cpu WHERE tmpltime() GROUP BY time(20s), cpu
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -83,9 +83,6 @@ cela. Mais plein de gens ont cette problématique et l'application `supervisor`
|
||||||
répond parfaitement à notre problématique !
|
répond parfaitement à notre problématique !
|
||||||
|
|
||||||
|
|
||||||
## `HEALTHCHECK`
|
|
||||||
|
|
||||||
|
|
||||||
## `supervisor`
|
## `supervisor`
|
||||||
|
|
||||||
Première étape : installer `supervisor`, le paquet se trouve dans les dépôts.
|
Première étape : installer `supervisor`, le paquet se trouve dans les dépôts.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue