Browse Source

Add docker formation

master
Bertrand Janvoie 2 years ago
parent
commit
3711cea35a
  1. 2
      Pepiniere/docker/.gitignore
  2. 112
      Pepiniere/docker/.gitlab-ci.yml
  3. 4
      Pepiniere/docker/.gitmodules
  4. BIN
      Pepiniere/docker/0.introduction-formation/images/CTRITTEN.jpg
  5. BIN
      Pepiniere/docker/0.introduction-formation/images/MPOULLAIN.jpg
  6. 40
      Pepiniere/docker/0.introduction-formation/images/docker-wave-whale.svg
  7. 72
      Pepiniere/docker/0.introduction-formation/index.html
  8. 69
      Pepiniere/docker/0.introduction-formation/introduction-formation.md
  9. 1
      Pepiniere/docker/0.introduction-formation/revealjs
  10. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/build-ship-run-any-app-anywhere.png
  11. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-container.png
  12. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-customers.png
  13. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-cycle.png
  14. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-engine-containerd-runc.png
  15. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-engine.png
  16. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-networking-host.jpg
  17. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-on-linux-platform.png
  18. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-on-windows-platform.png
  19. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-run-workflow.png
  20. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-subscription.png
  21. 40
      Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-wave-whale.svg
  22. 1
      Pepiniere/docker/1.introduction-aux-conteneurs/images/logo-docker.svg
  23. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/logo-podman.png
  24. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/micro-services.png
  25. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/most-popular-docker-official-images-in-2020.png
  26. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/network-expose-publish.png
  27. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/network-expose.png
  28. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/network.jpg
  29. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/solomon-hykes.png
  30. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/tp.gif
  31. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-Kernel-space-virtualization-vs-containerization.png
  32. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-julia-evans.png
  33. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-simple-container.png
  34. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-simple-user-space.png
  35. BIN
      Pepiniere/docker/1.introduction-aux-conteneurs/images/virtual-machine-vs-container.png
  36. 88
      Pepiniere/docker/1.introduction-aux-conteneurs/index.html
  37. 1121
      Pepiniere/docker/1.introduction-aux-conteneurs/introduction-aux-conteneurs.md
  38. 1
      Pepiniere/docker/1.introduction-aux-conteneurs/revealjs
  39. 793
      Pepiniere/docker/2.images-de-conteneurs/images-de-conteneurs.md
  40. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/dive.gif
  41. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-container-sharing-layers.jpg
  42. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-environment-args-env.png
  43. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-hub.png
  44. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-image-layers.jpg
  45. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-image-new-layer.jpg
  46. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-image-reusability.png
  47. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-one-process.png
  48. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/docker-registry.png
  49. 40
      Pepiniere/docker/2.images-de-conteneurs/images/docker-wave-whale.svg
  50. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/dockerfile-image-container.jpg
  51. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/most-popular-docker-official-images-in-2020.png
  52. BIN
      Pepiniere/docker/2.images-de-conteneurs/images/tp.gif
  53. 88
      Pepiniere/docker/2.images-de-conteneurs/index.html
  54. 1
      Pepiniere/docker/2.images-de-conteneurs/revealjs
  55. 737
      Pepiniere/docker/3.conteneurs-utilisation-avancee/conteneurs-utilisation-avancee.md
  56. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/ctop.gif
  57. 40
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/docker-wave-whale.svg
  58. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/tp.gif
  59. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-bind.png
  60. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-tmpfs.png
  61. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-volume.png
  62. BIN
      Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts.png
  63. 88
      Pepiniere/docker/3.conteneurs-utilisation-avancee/index.html
  64. 1
      Pepiniere/docker/3.conteneurs-utilisation-avancee/revealjs
  65. 366
      Pepiniere/docker/4.hotes-docker/hotes-docker.md
  66. 40
      Pepiniere/docker/4.hotes-docker/images/docker-wave-whale.svg
  67. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-ansible.png
  68. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-atomic.png
  69. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-coreos.jpg
  70. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-docker-machine.jpg
  71. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-heat.jpg
  72. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-photon.jpg
  73. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-rancher.jpg
  74. BIN
      Pepiniere/docker/4.hotes-docker/images/logo-terraform.jpg
  75. BIN
      Pepiniere/docker/4.hotes-docker/images/machine.png
  76. BIN
      Pepiniere/docker/4.hotes-docker/images/machine2.png
  77. BIN
      Pepiniere/docker/4.hotes-docker/images/rancheros-architecture.png
  78. BIN
      Pepiniere/docker/4.hotes-docker/images/tp.gif
  79. 72
      Pepiniere/docker/4.hotes-docker/index.html
  80. 1
      Pepiniere/docker/4.hotes-docker/revealjs
  81. BIN
      Pepiniere/docker/5.swarm/images/container-mess.jpg
  82. BIN
      Pepiniere/docker/5.swarm/images/docker-networking-overlay-addresses.jpg
  83. BIN
      Pepiniere/docker/5.swarm/images/docker-networking-overlay-routing.jpg
  84. BIN
      Pepiniere/docker/5.swarm/images/docker-networking-overlay.jpg
  85. 40
      Pepiniere/docker/5.swarm/images/docker-wave-whale.svg
  86. BIN
      Pepiniere/docker/5.swarm/images/glusterfs.png
  87. BIN
      Pepiniere/docker/5.swarm/images/orchestration-principle.jpg
  88. BIN
      Pepiniere/docker/5.swarm/images/swarm-network-ingress-lb.png
  89. BIN
      Pepiniere/docker/5.swarm/images/swarm-network-ingress-routing-mesh.png
  90. BIN
      Pepiniere/docker/5.swarm/images/swarm.png
  91. BIN
      Pepiniere/docker/5.swarm/images/swarm2.png
  92. BIN
      Pepiniere/docker/5.swarm/images/swarm3.png
  93. BIN
      Pepiniere/docker/5.swarm/images/tp.gif
  94. BIN
      Pepiniere/docker/5.swarm/images/traefik.png
  95. 88
      Pepiniere/docker/5.swarm/index.html
  96. 1
      Pepiniere/docker/5.swarm/revealjs
  97. 750
      Pepiniere/docker/5.swarm/swarm.md
  98. 40
      Pepiniere/docker/6.outils-administration/images/docker-wave-whale.svg
  99. BIN
      Pepiniere/docker/6.outils-administration/images/harbor-1.jpg
  100. BIN
      Pepiniere/docker/6.outils-administration/images/logo-harbor.png
  101. Some files were not shown because too many files have changed in this diff Show More

2
Pepiniere/docker/.gitignore vendored

@ -0,0 +1,2 @@
*.tgz
*.pdf

112
Pepiniere/docker/.gitlab-ci.yml

@ -0,0 +1,112 @@
variables:
GIT_SUBMODULE_STRATEGY: recursive
stages:
- build
build-pdf-introduction-aux-conteneurs:
stage: build
image:
name: astefanutti/decktape:2.11.0
entrypoint: [""]
only:
- schedules
tags:
- sii
- france
script:
#
# 1. We change the size with --size due to a strange rendering bug
# as decribed here: https://github.com/astefanutti/decktape/issues/151
#
# 2. We also specify --chrome-arg=--disable-web-security to autorize
# Cross origin requests in chrome as described here:
# https://github.com/astefanutti/decktape/issues/157
#
- node /decktape/decktape.js --chrome-path chromium-browser --chrome-arg=--no-sandbox --chrome-arg=--disable-web-security --size='1576x1182' 1.introduction-aux-conteneurs/index.html docker.introduction-aux-conteneurs.pdf
artifacts:
name: introduction-aux-conteneurs
expire_in: 8 days
paths:
- docker.introduction-aux-conteneurs.pdf
build-pdf-images-de-conteneurs:
stage: build
image:
name: astefanutti/decktape:2.11.0
entrypoint: [""]
only:
- schedules
tags:
- sii
- france
script:
#
# 1. We change the size with --size due to a strange rendering bug
# as decribed here: https://github.com/astefanutti/decktape/issues/151
#
# 2. We also specify --chrome-arg=--disable-web-security to autorize
# Cross origin requests in chrome as described here:
# https://github.com/astefanutti/decktape/issues/157
#
- node /decktape/decktape.js --chrome-path chromium-browser --chrome-arg=--no-sandbox --chrome-arg=--disable-web-security --size='1576x1182' 2.images-de-conteneurs/index.html docker.images-de-conteneurs.pdf
artifacts:
name: images-de-conteneurs
expire_in: 8 days
paths:
- docker.images-de-conteneurs.pdf
build-pdf-conteneurs-utilisation-avancee:
stage: build
image:
name: astefanutti/decktape:2.11.0
entrypoint: [""]
only:
- schedules
tags:
- sii
- france
script:
#
# 1. We change the size with --size due to a strange rendering bug
# as decribed here: https://github.com/astefanutti/decktape/issues/151
#
# 2. We also specify --chrome-arg=--disable-web-security to autorize
# Cross origin requests in chrome as described here:
# https://github.com/astefanutti/decktape/issues/157
#
- node /decktape/decktape.js --chrome-path chromium-browser --chrome-arg=--no-sandbox --chrome-arg=--disable-web-security --size='1576x1182' 3.conteneurs-utilisation-avancee/index.html docker.conteneurs-utilisation-avancee.pdf
artifacts:
name: conteneurs-utilisation-avancee
expire_in: 8 days
paths:
- docker.conteneurs-utilisation-avancee.pdf
build-pdf-swarm:
stage: build
image:
name: astefanutti/decktape:2.11.0
entrypoint: [""]
only:
- schedules
tags:
- sii
- france
script:
#
# 1. We change the size with --size due to a strange rendering bug
# as decribed here: https://github.com/astefanutti/decktape/issues/151
#
# 2. We also specify --chrome-arg=--disable-web-security to autorize
# Cross origin requests in chrome as described here:
# https://github.com/astefanutti/decktape/issues/157
#
- node /decktape/decktape.js --chrome-path chromium-browser --chrome-arg=--no-sandbox --chrome-arg=--disable-web-security --size='1576x1182' 5.swarm/index.html docker.swarm.pdf
artifacts:
name: swarm
expire_in: 8 days
paths:
- docker.swarm.pdf

4
Pepiniere/docker/.gitmodules vendored

@ -0,0 +1,4 @@
[submodule "revealjs"]
path = revealjs
url = ../../template-revealjs-sii-theme.git

BIN
Pepiniere/docker/0.introduction-formation/images/CTRITTEN.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
Pepiniere/docker/0.introduction-formation/images/MPOULLAIN.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

40
Pepiniere/docker/0.introduction-formation/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

72
Pepiniere/docker/0.introduction-formation/index.html

@ -0,0 +1,72 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SII - Introduction</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<link rel="stylesheet" href="revealjs/css/custom.css"> <!-- your custom styles -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="introduction-formation.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/lib/js/head.min.js"></script>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
history: true,
// Transition style
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Transition style for full page slide backgrounds
backgroundTransition: 'none', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js' },
{ src: 'revealjs/plugin/markdown/markdown.js' },
{ src: 'revealjs/plugin/notes/notes.js', async: true },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
// Slide number formatting can be configured using these variables:
// "h.v": horizontal . vertical slide number (default)
// "h/v": horizontal / vertical slide number
// "c": flattened slide number
// "c/t": flattened slide number / total slides
Reveal.configure({ slideNumber: 'c/t' });
Reveal.configure({ transition: 'none' });
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • janvier 2021</p>
</body>
</html>

69
Pepiniere/docker/0.introduction-formation/introduction-formation.md

@ -0,0 +1,69 @@
# Formation Docker
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
Christian Tritten
<small>ctritten@sii.fr</small>
## Pré-requis
* Savoir utiliser les commandes de base de Linux
* Savoir utiliser `vim` ou `nano`
## Formation à distance
* Vous pouvez intervenir quand vous voulez...
mais gardez votre micro coupé le reste du temps.
* Lorsque vous intervenez n'hésitez pas à allumer
votre caméra afin de permettre un échange plus convivial.
* Sur Teams, vous pouvez la main en cas de problème.
## Horaires
|||
|:-|-:|
|démarrage|__9h30__|
|pause|__~ 11h00__|
|repas|__12h30__|
|reprise|__14h00__|
|pause|__~ 16h00__|
|fin|__17h30__|
# Badge
Le port du badge SII de façon visible
est obligatoire dans les locaux.
# Tour de table
* Qui êtes-vous ?
* Connaissez-vous déjà Docker ?
* Qu'attendez-vous de la formation ?
# C'est parti !!!
# Ressources internes
<!-- .slide: data-state="cheat-sheet" -->
1. Formation Docker SII
<small>[https://gitlab.sii.fr/sii-ouest/trainings/docker](https://gitlab.sii.fr/sii-ouest/trainings/docker)</small>
2. Mattermost SII ouest
<small>[https://mattermost.siinergy.net/ouest/channels/docker](https://mattermost.siinergy.net/ouest/channels/docker)</small>
3. Mattermost SII France
<small>[https://mattermost.siinergy.net/france/channels/community-docker](https://mattermost.siinergy.net/france/channels/community-docker)</small>

1
Pepiniere/docker/0.introduction-formation/revealjs

@ -0,0 +1 @@
../revealjs

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/build-ship-run-any-app-anywhere.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-container.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-customers.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-cycle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-engine-containerd-runc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-engine.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-networking-host.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-on-linux-platform.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-on-windows-platform.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-run-workflow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-subscription.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

40
Pepiniere/docker/1.introduction-aux-conteneurs/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

1
Pepiniere/docker/1.introduction-aux-conteneurs/images/logo-docker.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/logo-podman.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/micro-services.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/most-popular-docker-official-images-in-2020.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/network-expose-publish.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/network-expose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/network.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/solomon-hykes.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/tp.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-Kernel-space-virtualization-vs-containerization.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-julia-evans.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-simple-container.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/user-space-vs-kernel-space-simple-user-space.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
Pepiniere/docker/1.introduction-aux-conteneurs/images/virtual-machine-vs-container.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

88
Pepiniere/docker/1.introduction-aux-conteneurs/index.html

@ -0,0 +1,88 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SII - Introduction aux conteneurs</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="revealjs/css/reset.css">
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/monokai.css">
<!-- Specific CSS override to reduce font size and align text on the left -->
<style>
.reveal .slides {
text-align: left;
}
</style>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="introduction-aux-conteneurs.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true },
{ src: 'revealjs/plugin/search/search.js', async: true },
{ src: 'revealjs/plugin/zoom-js/zoom.js', async: true },
{ src: 'revealjs/plugin/notes/notes.js', async: true }
]
});
Reveal.configure({
slideNumber: 'c/t'
});
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • janvier 2022</p>
</body>
</html>

1121
Pepiniere/docker/1.introduction-aux-conteneurs/introduction-aux-conteneurs.md

File diff suppressed because it is too large Load Diff

1
Pepiniere/docker/1.introduction-aux-conteneurs/revealjs

@ -0,0 +1 @@
../revealjs

793
Pepiniere/docker/2.images-de-conteneurs/images-de-conteneurs.md

@ -0,0 +1,793 @@
# Docker
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
__Images de conteneurs__
Maxime Poullain • Christian Tritten
### Qu'est-ce qu'une image de conteneur ?
Une image :
- Est un template de conteneur en lecture seule.
- Est composée de fichiers et de métadonnées.
- Peut par exemple contenir un système d'exploitation Debian avec Apache et une application web pré-installés.
- Est "instanciée" pour créer un ou plusieurs conteneurs.
![Les images Docker les plus populaires en 2020](images/most-popular-docker-official-images-in-2020.png)
<small>Source : https://www.docker.com/blog/docker-index-shows-continued-massive-developer-adoption-and-activity-to-build-and-share-apps-with-docker/</small>
### Images incrémentales et réutilisables
![Images réutilisables](images/docker-image-reusability.png)
**Remarque importante**
Si l'image de base est modifiée (par exemple dans le cadre de l'application d'une mise à jour de sécurité), et que l'on souhaite propager cette mise à jour sur les images dérivées, il faudra reconstruire ces dernières.
### Système de fichiers multi-couches
- Les images sont composées d'une ou plusieurs couches superposées.
- Chaque couche représente un différentiel des changements apportés par rapport à la couche inférieure.
- Lorsque plusieurs images partagent des couches, cela permet d'optimiser l'espace disque, et les temps de transfert.
<!-- .slide: style="text-align: center" -->
![Système de fichiers multi-couches](images/docker-image-layers.jpg)
- La principale différence entre un conteneur et une image réside dans la _couche en r/w_ du sommet.
- Toutes les écritures qui ajoutent ou modifient des données dans un conteneur sont stockées sur cette couche.
- Quand le conteneur est supprimé la couche en r/w est aussi supprimée, les couches inférieures de l'image de base restent inchangées.
- On peut sauvegarder les modifications effectuée au sein d'un conteneur en utilisant la commande : `docker commit`
- Ceci va ajouter une _nouvelle couche_ en lecture seule au dessus de la pile composant l'image.
Lorsqu'une image est modifiée, une nouvelle couche est ajoutée au sommet de la pile :
![Ajout d'une nouvelle couche](images/docker-image-new-layer.jpg)
### Partage d'image entre plusieurs conteneurs
<!-- .slide: style="text-align: center" -->
![Partage d'image entre plusieurs conteneurs](images/docker-container-sharing-layers.jpg)
## Gestion des images
Outils et commandes pour la gestion des images
### Images locales
`docker image ls`
<!-- .slide: data-state="small-code" -->
```none
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
composeformation_web latest 0d2d42971538 20 hours ago 237MB
debian-formation latest 257c415ffcc7 20 hours ago 237MB
mariadb 10.1.24 98f78d96be9c 2 weeks ago 395MB
debian jessie 3e83c23dba6a 3 weeks ago 124MB
hello-world latest 48b5124b2768 4 months ago 1.84kB
```
### Le Docker Hub
Le [Docker Hub](https://hub.docker.com/) est un entrepôt d'images de conteneurs sur lequel on peut télécharger :
* des images _officielles_ certifiées par Docker
* des images _publiques_ maintenues par la communauté
![Recherche mariadb sur le Docker Hub](images/docker-hub.png)
__Attention !__
Docker ne garantie pas le bon fonctionnement
ni même l'absence de faille de sécurité
sur les images non officielles.
### Chercher une image sur le Docker Hub
`docker search IMAGE`
<!-- .slide: data-state="small-code" -->
```none
$ docker search mariadb
NAME DESCRIPTION STARS OFFICIAL
mariadb MariaDB is a community-developed for... 1354 [OK]
bitnami/mariadb Bitnami MariaDB Docker Image 37
paintedfox/mariadb A docker image for running MariaDB 5... 29
million12/mariadb MariaDB 10 on CentOS-7 with UTF8 default 14
toughiq/mariadb-cluster Dockerized Automated MariaDB Galera ... 11
webhippie/mariadb Docker images for mariadb 9
gists/mariadb MariaDB on Alpine 7
panubo/mariadb-galera MariaDB Galera Cluster 7
kakilangit/mariadb Docker for MariaDB with OQGraph & To... 6
maxexcloo/mariadb Service container with MariaDB insta... 4
tianon/mariadb DEPRECATED; use mariadb:* -- ♪ "I ju... 4
takaomag/mariadb docker image of archlinux (mariadb) 2
drupaldocker/mariadb MariaDB for Drupal 1
...
```
### Récupérer une image sur le Docker Hub
`docker pull IMAGE[:TAG]`
<!-- .slide: data-state="small-code" -->
```none
$ docker pull mariadb:10.7.1
Using default tag: latest
latest: Pulling from library/mariadb
10a267c67f42: Pull complete
c2dcc7bb2a88: Pull complete
17e7a0445698: Pull complete
9a61839a176f: Pull complete
64675690edb1: Pull complete
3de17e251488: Pull complete
f814b22b783e: Pull complete
733ce1f03439: Pull complete
fb7b719835fd: Pull complete
8d3f82357729: Pull complete
a4f4cbdfcf7c: Pull complete
Digest: sha256:4b54358541679032f6c3a9d9fc944ad96d77ae72fecd6cb44bf18cf97743da24
Status: Downloaded newer image for mariadb:10.7.1
```
### Visualiser l'historique d'une image
`docker history IMAGE`
<!-- .slide: data-state="small-code" -->
```none
$ docker history mariadb:10.7.1
IMAGE CREATED CREATED BY SIZE
98f78d96be9c 2 weeks ago /bin/sh -c #(nop) CMD ["mysqld"] 0B
<missing> 2 weeks ago /bin/sh -c #(nop) EXPOSE 3306/tcp 0B
<missing> 2 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-ent... 0B
<missing> 2 weeks ago /bin/sh -c ln -s usr/local/bin/docker-entr... 34B
<missing> 2 weeks ago /bin/sh -c #(nop) COPY file:d559178e6a2929... 5.6kB
<missing> 2 weeks ago /bin/sh -c #(nop) VOLUME [/var/lib/mysql] 0B
<missing> 2 weeks ago /bin/sh -c sed -Ei 's/^(bind-address|log)/... 5.27kB
<missing> 2 weeks ago /bin/sh -c { echo mariadb-server-$MARIAD... 252MB
<missing> 2 weeks ago /bin/sh -c echo "deb https://repo.percona.... 114B
<missing> 2 weeks ago /bin/sh -c set -ex; export GNUPGHOME="$(m... 21.1kB
<missing> 2 weeks ago /bin/sh -c apt-get update && apt-get insta... 14.3MB
<missing> 2 weeks ago /bin/sh -c set -x && apt-get update && ap... 4.58MB
<missing> 2 weeks ago /bin/sh -c groupadd -r mysql && useradd -r... 330kB
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:f4e6551ac34ab44... 124MB
```
### "Inspecter" une image
`docker inspect IMAGE`
<!-- .slide: data-state="small-code" -->
```none
$ docker inspect mariadb
[
{
"Id": "sha256:98f78d96be9c7f513f21de040d083ee7ba23d74c8f3bc499373e56e93c...",
"RepoTags": [
"mariadb:10.7.1"
],
"RepoDigests": [
"mariadb@sha256:4b54358541679032f6c3a9d9fc944ad96d77ae72fecd6cb44bf1..."
],
"Parent": "",
"Comment": "",
"Created": "2017-05-09T17:28:06.071608373Z",
"Container": "83ce76bba170200d3783bde70b7c1d06a61ed2b91bec7351a5c5a664f5...",
"ContainerConfig": {
"Hostname": "200591939db7",
"Domainname": "",
"User": "",
"ExposedPorts": {
"3306/tcp": {}
```
### Supprimer une image
`docker image rm IMAGE [IMAGE...]`
<!-- .slide: data-state="small-code" -->
```none
$ docker image rm mariadb:10.7.1
Untagged: mariadb:10.7.1
Untagged: mariadb@sha256:4b54358541679032f6c3a9d9fc944ad96d77ae72fecd6cb44bf18cf...
Deleted: sha256:98f78d96be9c7f513f21de040d083ee7ba23d74c8f3bc499373e56e93c8e9ec9
Deleted: sha256:bea03b338eb87d64861847305aa63f6104212c60719168f25b54ca713db4b870
Deleted: sha256:519db73d66bef13a78573160ddf2059f9dc382e03fd2e85f354c3172ded67b90
Deleted: sha256:7f728a3fd818a51a5425306ef40f398c7698f4252ade70cb83b3d26b825bb613
Deleted: sha256:48159803f1446a31e60af329025fc5c3ae8ef07f950d8750a7e14d46d1d1191c
Deleted: sha256:ff5b1cc6d50c6f7ab9e6ee77ff89b0b037a6840f7b1f44cbe234499362221c15
Deleted: sha256:d147674f5cce42f85942e815f154c6a7ecb86359689d823a9840b28126a12f4e
Deleted: sha256:571be45150dde0fb8f6c3862abbcfa06fbad0e6a128d459a6b8ad0660f9f0660
Deleted: sha256:458271f19a2c854fc6fd3338f9151662173b96a14cfe1a2e46eca95d27e4102c
Deleted: sha256:ba779192baede4aadd009c269406b5e8fd885c653ce19719316bf40cc66a6cf3
Deleted: sha256:2302bd8bbdd530199aa432c357a4da9eab2621c3ba4c4dacb4ea0f4afecbcae7
Deleted: sha256:00771f8e1e12bdfc9d47bc52a78e3f5ce5306a1caa5dd6237731cff9ca106040
Deleted: sha256:8d4d1ab5ff74fc361fb74212fff3b6dc1e6c16d1e1f0e8b44f9a9112b00b564f
```
### Importer / Exporter une image
<!-- .slide: data-state="cheat-sheet" -->
1. Export
`$ docker save -o mon-image.tar IMAGE`
2. Import
`$ docker load -i mon-image.tar`
### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Docker Images](../travaux-pratiques/slides/docker/tp-images.html)</small>
## Dockerfile
Automatiser la construction d'une image
- Il est possible de construire une image à la main puis de la sauvegarder avec un `docker commit`.
- Toutefois ceci est fastidieux, non parfaitement reproductible et donc potentiellement source d'erreur.
- D'autre part, comment gérer les mises à jours d'une telle image ?
- Docker est capable de construire des images automatiquement à partir des instructions d'un _Dockerfile_.
- Le Dockerfile est un fichier texte qui contient toutes les instructions permettant de construire une image Docker pour une application donnée.
<small>[https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/)</small>
![Dockerfile](images/dockerfile-image-container.jpg)
- Le Dockerfile est versionnable et permet de produire une image à tout moment.
- Ceci s'inscrit dans la philosophie _Infrastructure as Code_ qui prône la définition d'une architecture dans des fichiers textes déclaratifs.
- Grâce au Dockerfile on peut reconstruire périodiquement une image afin quelle intègre les dernières mises à jour applicatives et les derniers patches de sécurité.
### Exemple de Dockerfile
<!-- .slide: data-state="small-code" -->
```docker
FROM debian:bullseye
LABEL maintainer "robert@produpot.com"
# On installe Apache httpd
ENV DEBIAN_FRONTEND noninteractive
RUN apt update \
&& apt install -y apache2 \
&& rm -rf /var/lib/apt/lists/*
# Ajout d'un script d'init
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# Importe l'application
RUN mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
ADD homepage/ /app
# On expose le port 80
EXPOSE 80
# On indique le script qui doit être lancé au démarrage du conteneur
ENTRYPOINT ["/run.sh"]
```
### Principales directives
<!-- .slide: data-state="medium-table" -->
Directive | Description
- | -
`FROM` | Spécifie l'image de départ pour la construction de la nouvelle image.
`LABEL` | Ajoute des métadonnées à la nouvelle image.
`ENV` / `ARG` | Ajoute des variables d'environnement.
`ADD` / `COPY` | Copie des fichiers ou des dossiers sur le système de fichiers de l'image.
`VOLUME` | Créé un point de montage à l'instanciation du conteneur.
### Principales directives (suite)
<!-- .slide: data-state="medium-table" -->
Directive | Description
- | -
`RUN` | Exécute une commande et "commite" le résultat dans une nouvelle couche de l'image.
`USER` | Spécifie l'utilisateur à utiliser pour jouer les instructions `RUN` et `ENTRYPOINT`.
`HEALTHCHECK` | Indique une commande qui sera lancée à l'intérieur du conteneur pour vérifier que celui-ci tourne correctement.
`ENTRYPOINT` | Définie une commande de base à exécuter dans le conteneur.
`CMD` | Définie les paramètres par défaut de la commande de base.
### LABEL
```docker
LABEL maintainer="user@example.com" \
vendor=ACME\ Incorporated \
com.example.version="0.0.1-beta" \
com.example.release-date="2015-02-12"
```
### Choisir entre `ARG` et `ENV`
* `ARG` et `ENV` permettent de déclarer des variables qui sont utilisables à partir du moment où elles sont déclarées dans le Dockerfile.
* Les `ARG` peuvent être surchargées au moment du build via l'option `--build-arg`.
* Les `ENV` peuvent être surchargées à l'exécution via l'option `-e`.
* Si une variable `ARG` est utilisée sans valeur par défaut et qu'aucune valeur n'est fournie via `--build-arg`, cela déclenche une erreur lors du build.
![ARG vs ENV](images/docker-environment-args-env.png)
<small>https://vsupalov.com/docker-arg-env-variable-guide/</small>
<!-- .slide: data-state="small-code" -->
`Dockerfile`
```docker
ARG MY_VAR_1 <---- expect a build-time variable
ARG MY_VAR_2=pouet <---- set a build-time variable
RUN touch "$MY_VAR_2"
ARG A_VARIABLE <---- expect a build-time variable
ENV another_var=$A_VARIABLE <---- use the value to set the ENV var default
if not overridden, that value of another_var
will be available to your containers!
```
### Choisir entre `ADD` et `COPY`
Les deux directives ont la même syntaxe :
```docker
COPY <src>... <dest>
ADD <src>... <dest>
```
Selon le guide des bonnes pratiques Docker :
* Utilisez `COPY` dans tous les cas, sauf si vous avez besoin d'extraire automatiquement le contenu d'une archive, dans ce cas précis utilisez `ADD`.
* Pour récupérer des fichiers distants, préférez plutôt l'instruction `RUN wget ...`.
### CMD et ENTRYPOINT
Les commandes `CMD` et `ENTRYPOINT` permettent
de définir la commande par défaut à exécuter
à l'intérieur du conteneur.
- `ENTRYPOINT` définie la commande de base pour le conteneur,
- `CMD` définie les paramètres par défaut pour cette commande.
```docker
FROM debian:bullseye
RUN apt update && apt install -y cowsay
ENTRYPOINT ["/usr/games/cowsay"]
CMD ["hello"]
```
```none
$ docker build -t cowsay .
...
Successfully built a27691083512
Successfully tagged cowsay:latest
```
```none
$ docker run cowsay
-------
< hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
```
```none
$ docker run cowsay 2,21 Gigowatts ?!
-------------------
< 2,21 Gigowatts ?! >
-------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
```
### HEALTHCHECK
L'exemple suivant teste toutes les 5 minutes que le conteneur est capable de servir une ressource HTTP en moins de 3 secondes :
```docker
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
```
Le test de santé étant lancé depuis l'intérieur du conteneur, _la commande `curl` utilisée dans l'exemple ci-dessus doit être présente dans le conteneur_.
<!-- .slide: data-state="small-code" -->
Le status _healthy_ / _unhealthy_ est consultable
via `docker ps` ou `docker inspect`
```none
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
9e2ea5f59f8b xian/web "/start.sh" 28 minutes ago Up 28 minutes (healthy)
20851619e1af xian/web "/start.sh" 23 minutes ago Up 23 minutes (unhealthy)
```
```none
$ docker inspect -f '{{json .State.Health.Status}}' conteneur
"healthy"
```
Il s'agit d'un simple message informatif, en effet Docker ne relance pas de lui-même un conteneur détecté comme _unhealthy_.
* Toutefois, Le changement de santé d’un conteneur génère un évenement Docker que les outils de monitoring et d’orchestration peuvent intercepter.
* Par exemple l'orchestrateur Swarm utilise cette information pour remplacer automatiquement le conteneur défectueux par une nouvelle instance.
### Construire l'image à partir du Dockerfile
`docker build -t IMAGE[:TAG] .`
Les tags permettent de proposer
plusieurs versions d'une image.
`docker build -t mon-image:v1 .`
Une même image peut
être tagguée plusieurs fois :
ex : `debian:10` et `debian:buster`
### Derrière un proxy
<!-- .slide: data-state="medium-code" -->
`--build-arg http_proxy=PROXY`
```none
$ docker build --build-arg http_proxy=http://my.proxy.url:3128 \
--tag debian-formation .
```
## Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Dockerfile](../travaux-pratiques/slides/docker/tp-dockerfile.html)</small>
### Rendre une image publique
* On peut rendre une image publique en la poussant sur le Docker Hub.
* La création d'un Docker ID est nécessaire.
* Le Docker ID sera le nom d'utilisateur pour le Docker Hub.
* La commande `docker login` permet de se connecter au Hub.
Pour pouvoir pousser une image sur le Hub, il faut la nommer avec un nom de la forme `docker-id/image:tag`
Ceci se fait avec la commande `docker tag` :
```none
$ docker tag mon-image mon-docker-id/mon-image:1.0.0
```
Il est ensuite possible de pousser l'image avec la commande `docker push` :
```none
$ docker push mon-docker-id/mon-image:1.0.0
```
A partir de là, l'image devient accessible publiquement par n'importe qui.
### Dockerfile
#### les bonnes pratiques
Réutiliser au maximum la même image de base afin de mutualiser les couches entre vos différentes images applicatives.
Eviter d'installer tout ce qui n'est pas strictement nécessaire.
<small>Paquets de la distribution, paquets applicatifs, ...</small>
Alléger les images en supprimant les données inutiles, mais pas n'importe comment !
```docker
RUN apt-get update && apt-get install -y package
RUN rm -rf /var/lib/apt/lists/*
```
Chaque couche est commitée en readonly avant de passer à l'instruction suivante !
Il faut nettoyer dans la même couche !
```docker
RUN apt update \
&& apt install -y package \
&& rm -rf /var/lib/apt/lists/*
```
```docker
RUN wget archive.tar.gz \
&& tar xzvf archive.tar.gz \
&& rm archive.tar.gz
```
(Combiner plusieurs instructions `RUN` permet également de diminuer le nombre de couches constituant l'image.)
Ne pas utiliser `apt-get upgrade` ou `apt-get dist-upgrade` dans vos images spécialisées.
Ceci doit être fait dans l'image OS de base.
Chaque conteneur devrait se focaliser sur une seule tâche.
![Un processus par conteneur](images/docker-one-process.png) <!-- .element: width="80%" -->
Utiliser une image de base légère.
Par exemple, [debian:bullseye-slim](https://hub.docker.com/_/debian/) pèse ~30MB tout en restant une distribution complète.
Proscrire l'utilisation du tag `latest` en production.
__Attention !__
<small>`docker pull myimage` == `docker pull myimage:latest`</small>
Le tag `latest` est utilisé par défaut si vous n'en fournissez pas un dans vos commandes Docker !
3 bonnes raisons de ne pas utiliser le tag `latest`
* Votre outil de déploiement ne déploiera pas une nouvelle version de votre application taggué latest, tout simplement parce qu'il ne détectera pas la différence avec l'ancienne version elle aussi tagguée avec latest.
* Tagguer une image avec un numéro de version unique permet d'effectuer de la tracabilité. On sait exactement quelle version est déployée.
* En réutilisant systématiquement le tag latest, tout retour arrière à une ancienne version de l'image est impossible, car vous écrasez systématiquement la précédente version de l'image docker.
Déterminer une stratégie pour les tags
* Lorsque on crée une image, il nous appartient de lui ajouter des tags appropriés.
* Utiliser une stratégie pour les tags qui soit cohérente et consistante sur toutes les images produites.
* La stratégie doit être facilement compréhensible par les utilisateurs de ces images.
<!-- .slide: data-state="medium-code" -->
__L'exécution de processus avec l'utilisateur `root` à l'intérieur d'un conteneur est un préliminaire à de nombreux types d'attaques.__
Déclarer un utilisateur dédié permet d'éviter un grand nombre d'attaques :
```docker
RUN useradd -d /home/my-app-user -m -s /bin/bash my-app-user
USER my-app-user
```
On peut forcer l'utilisateur à l'exécution :
```none
$ docker run --user my-app-user -d -t my-application
```
L'utilisateur doit exister dans `/etc/passwd` à l'intérieur du conteneur.
Ne pas écrire de secrets dans le Dockerfile.
<small>(secret == mot de passe, clé de chiffrement, clé d'API)</small>
Injecter la configuration à l'exécution du conteneur.
Utiliser la fonctionnalité de _multi-stage build_ (Docker > v17.05) pour produire des images plus petites.
Un cas d'usage est celui où l'on doit compiler une binaire afin de produire l'image applicative finale.
En découpant le processus de build, on va tout d'abord construire une image dédié à la compilation du binaire et injecter le résultat de cette compilation dans l'image finale qui sera ainsi d'une beaucoup plus réduite.
<!-- .slide: data-state="medium-code" -->
`Dockerfile`
```docker
FROM golang:1.10 as builder
WORKDIR /tmp/go
COPY hello.go ./
RUN CGO_ENABLED=0 go build -a -ldflags '-s' -o hello
FROM scratch
CMD [ "/hello" ]
COPY --from=builder /tmp/go/hello /hello
```
`$ docker build -t hello:1 .`
<!-- .slide: data-state="small-code" -->
`$ docker image ls`
```none
REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest 212f44bc4048 4 seconds ago 3.2MB
<none> <none> 08370cf772b1 5 seconds ago 693MB
```
Le résultat final est une image d'environ 3Mb au lieu de 700Mb sans le multi-stage build.
Pour le reste des bonnes pratiques :
* https://sysdig.com/blog/dockerfile-best-practices/
* https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
* https://cloud.google.com/solutions/best-practices-for-building-containers
#### Haskell Dockerfile Linter
Un outil pour vérifier les bonnes pratiques
sur les fichiers Dockerfile
<!-- .slide: data-state="small-code" -->
```none
$ docker run --rm -i hadolint/hadolint < Dockerfile
/dev/stdin:2 DL3020 Use COPY instead of ADD for files and folders
/dev/stdin:4 DL3025 Use arguments JSON notation for CMD and ENTRYPOINT arguments
```
https://github.com/hadolint/hadolint
Alternatives : [Dockle](https://github.com/goodwithtech/dockle) | [Trivy](https://aquasecurity.github.io/trivy/)
## Nettoyer les images
Les images ont tendance à s'accumuler et à remplir progressivement l'espace de stockage sur les hôtes.
* `$ docker image prune`
Supprime toutes les images qui ne sont ni taguées ni référencées par au moins un conteneur.
* `$ docker image prune -a`
Supprime toutes les images qui ne sont pas référencées par au moins un conteneur.
## Registry
* Le composant Docker Registry permet le stockage et la distribution d'images Docker.
* Docker Inc. fourni une image officielle prête à l'emploi pour déployer facilement un Registry.
### Fonctionnalités
* Authentification des utilisateurs
* Push/Pull d'images
* Stockage des images sur une grande variété de backends (S3, Posix Filesystems, Ceph, Swift...)
### Utilisation du Docker Registry
<!-- .slide: data-state="medium-code" -->
```none
$ docker pull hello-world
$ docker tag hello-world mon_nom_de_domaine:5000/hello-world
$ docker push mon_nom_de_domaine:5000/hello-world
...
$ docker pull mon_nom_de_domaine:5000/hello-world
```
## Sécurité - rapports
* __NCC Group__
Understanding and Hardening Linux Containers
Juin 2016
[www.nccgroup.trust/](https://www.nccgroup.trust/globalassets/our-research/us/whitepapers/2016/april/ncc_group_understanding_hardening_linux_containers-1-1.pdf)
* __NIST__
Application Container Security Guide
Sept. 2017
[http://nvlpubs.nist.gov/](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf)
### Sécurité - outils
* Docker Bench for Security
[github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security)
* Trivy - Analyse de vulnérabilités sur les images
[https://aquasecurity.github.io/trivy/](https://aquasecurity.github.io/trivy/)
### Outils alternatifs pour construire des Images compatibles OCI
* Kaniko
<small>[https://github.com/GoogleContainerTools/kaniko](https://github.com/GoogleContainerTools/kaniko)</small>
* makisu
<small>[https://github.com/uber/makisu](https://github.com/uber/makisu)</small>
* Buildah
<small>[https://github.com/containers/buildah](https://github.com/containers/buildah)</small>
* Pas besoin d'élévation de privilèges (Docker build nécessite d'être root).
* Utilisation d'un cache distribué pour optimiser les performances sur un cluster de build.
* Permet de contrôler les couches générées dans l'image.
### Inspecter les couches d'une image
* Dive
https://github.com/wagoodman/dive
![dive](images/dive.gif)

BIN
Pepiniere/docker/2.images-de-conteneurs/images/dive.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-container-sharing-layers.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-environment-args-env.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-hub.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-image-layers.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-image-new-layer.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-image-reusability.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-one-process.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/docker-registry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

40
Pepiniere/docker/2.images-de-conteneurs/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/dockerfile-image-container.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/most-popular-docker-official-images-in-2020.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
Pepiniere/docker/2.images-de-conteneurs/images/tp.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

88
Pepiniere/docker/2.images-de-conteneurs/index.html

@ -0,0 +1,88 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SII - Images de conteneurs</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="revealjs/css/reset.css">
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/monokai.css">
<!-- Specific CSS override to reduce font size and align text on the left -->
<style>
.reveal .slides {
text-align: left;
}
</style>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="images-de-conteneurs.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true },
{ src: 'revealjs/plugin/search/search.js', async: true },
{ src: 'revealjs/plugin/zoom-js/zoom.js', async: true },
{ src: 'revealjs/plugin/notes/notes.js', async: true }
]
});
Reveal.configure({
slideNumber: 'c/t'
});
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • janvier 2022</p>
</body>
</html>

1
Pepiniere/docker/2.images-de-conteneurs/revealjs

@ -0,0 +1 @@
../revealjs

737
Pepiniere/docker/3.conteneurs-utilisation-avancee/conteneurs-utilisation-avancee.md

@ -0,0 +1,737 @@
# Docker
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
**Les conteneurs - Utilisation avancée**
Maxime Poullain • Christian Tritten
## Docker run
Permet d'instancier un conteneur à partir d'une image
### Docker run - options
<!-- .slide: data-state="medium-table" -->
Option | Description
- | -
`--detach`, `-d` | Mode _détaché_ : lance le conteneur à l'arrière plan
`--name NAME` | Donne un nom au conteneur
`--interactive`, `-i` | Conserve STDIN ouvert
`--tty`, `-t` | Alloue un pseudo-TTY
### Docker run - restart policies
On utilise l'option `--restart` avec ces paramètres :
<!-- .slide: data-state="medium-table" -->
Policy | Result
-------------------------|---------------------------------------
`no` | Par défaut. Ne redémarre pas
`on-failure[:max-retries]` | Redémarre seulement avec un _non-zero exit status_
`always` | Redémarre tout le temps et indéfiniment. Démarre aussi en même temps que le démon Docker
`unless-stopped` | Redémarre tout le temps sauf si il a été coupé
### Contraintes sur les ressources
* Par défaut une application conteneurisée peut consommer l'intégralité de la mémoire disponible de l'hôte.
* Lorsqu'il n'y a plus de mémoire disponible, le kernel Linux :
1. lance une _Out Of Memory Exception_ (OOME),
2. commence à [tuer des processus](https://www.kernel.org/doc/gorman/html/understand/understand016.html) pour libérer de la mémoire.
Il est possible de limiter les ressources allouées à un conteneur grâce à la technologie des _control groups_.
Option | Description
-------------------------|---------------------------------------
`--memory` | Limite mémoire, minimum 4M
`--memory-swap` | Limite mémoire totale, (memoire + swap)
`--cpu` | Limite sur l'utilisation du cpu
<small>https://docs.docker.com/config/containers/resource_constraints/</small>
Sur un système en production il est recommandé d'appliquer systématiquement des limitations sur l'utilisation de la mémoire.
## Docker exec
Permet d'éxécuter des commandes dans le conteneur en plus du processus de base.
Notamment utile pour débugger.
### Docker exec - options
<!-- .slide: data-state="medium-table" -->
Option | Shorthand | Default | Description
----------------|-------------|---------|------------------------------
`--detach` | `-d` | False | Detached mode: run command in the background
`--interactive` | `-i` | False | Keep STDIN open even if not attached
`--tty` | `-t` | False | Allocate a pseudo-TTY
`--user` | `-u` | False | Username or UID
### Docker exec - exemple
* Ouvrir une console Bash dans le conteneur :
`$ docker exec -it mon_conteneur /bin/bash`
* Créer un fichier à l'intérieur du conteneur :
`$ docker exec mon_conteneur touch /tmp/test`
## Docker cp
Permet de copier des fichiers/dossiers depuis et vers un conteneur en cours d'exécution.
* Copie un fichier de l'hôte vers le conteneur :
`$ docker cp fichier nom-du-conteneur:/chemin/vers/fichier`
* Créer un fichier du conteneur vers l'hôte :
`$ docker cp nom-du-conteneur:/chemin/vers/fichier fichier`
## Docker diff
Affiche les modifications effectuées sur le système de fichiers du conteneur.
<!-- .slide: data-state="small-code" -->
```
$ docker diff mon-conteneur
C /var
C /var/lib
C /var/lib/apt
C /var/lib/apt/lists
A /var/lib/apt/lists/lock
A /var/lib/apt/lists/auxfiles
A /var/lib/apt/lists/deb.debian.org_debian_dists_bullseye_InRelease
A /var/lib/apt/lists/partial
```
## Monitoring simple des conteneurs
### Docker Stats
Docker embarque un équivalent de la commande `top` permettant d'afficher les métriques des conteneurs en cours d'exécution.
`docker stats`
<!-- .slide: data-state="small-code" -->
```none
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
5098617c3654 0.05% 0B / 0B 0.00% 648B / 0B 0B / 0B 2
b2d0efcb5151 1.00% 0B / 0B 0.00% 648B / 0B 0B / 0B 3
cbdb1069b241 0.10% 0B / 0B 0.00% 648B / 0B 0B / 0B 5
```
### ctop
Métriques des conteneurs dans une interface à la `top`.
![ctop](images/ctop.gif)
<small>Source : [https://ctop.sh/](https://ctop.sh/)</small>
## Configuration d'une application
### Variables d'environnement
- Il est possible d'injecter des variables d'environnement dans le conteneur au moment de sa création.
- L'option `--env` permet de spécifier une variable et sa valeur.
- L'option `--env-file` permet de passer un fichier de variables.
- Une fois injectées dans le conteneur ces variables sont accessibles par le premier processus lancé.
#### Exemple
- L'image de _MariaDB_ est conçue pour être configurée à l'exécution à l'aide de variables d'environnement.
- Ces variables vont permettre d'initialiser une base avec un utilisateur et mot de passe personnalisés.
```none
$ docker run --name mariadb \
--env MYSQL_ROOT_PASSWORD=docker \
--env MYSQL_DATABASE=docker \
--env MYSQL_USER=docker \
--env MYSQL_PASSWORD=docker \
mariadb:10.7.1
```
#### Exemple avec --env-file
`mariadb-vars`
```none
MYSQL_ROOT_PASSWORD=docker
MYSQL_DATABASE=docker
MYSQL_USER=docker
MYSQL_PASSWORD=docker
```
```none
$ docker run --name mariadb \
--env-file=mariadb-vars \
mariadb:10.7.1
```
#### Mini TP : variables d'environnement
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
Créer un conteneur basé sur l'image `xian310/who-is-there:21` avec la configuration suivante :
- Lancer le conteneur au premier plan.
- Publier le port d'écoute dans le conteneur (8080) vers le port de votre choix sur l'hôte.
Accéder à l'application dans le navigateur web en précisant le chemin `/env` dans l'url.
<!-- .slide: data-background="#2E2E2E" data-state="medium-code" -->
Créer le conteneur :
```none
$ docker run --rm --publish 8080:8080 xian310/who-is-there:21
```
Accéder à l'application :
```none
$ firefox http://127.0.0.1:8080/env
```
- Supprimer le conteneur.
- Créer un nouveau conteneur en lui passant au moins 2 variables d'environnement de votre choix.
- Recharger la page web.
<!-- .slide: data-background="#2E2E2E" data-state="medium-code" -->
Créer un nouveau conteneur en lui passant des variables d'environnement :
```none
$ docker run --rm --publish 8080:8080 \
--env MA_VARIABLE=hello --env MON_AUTRE_VARIABLE="au revoir" \
xian310/who-is-there:21
```
- On peut configurer la couleur de fond de la page `/env` en passant la variable `COLOR` au conteneur.
- Pour une liste des couleur possibles :
https://fr.wikipedia.org/wiki/Couleur_du_Web
<!-- .slide: data-background="#2E2E2E" data-state="medium-code" -->
Changer la couleur de fond de la page `/env` :
```none
$ docker run --rm --publish 8080:8080 \
--env COLOR=lightblue \
xian310/who-is-there:21
```
```none
$ docker run --rm --publish 8080:8080 \
--env COLOR=pink \
xian310/who-is-there:21
```
## Gestion des données
Persistance des données avec Docker
### 3 mécanismes différents
Docker offre trois mécanismes permettant de monter des données de l'hôte dans un conteneur :
- volumes
- bind mounts
- tmpfs volumes
Dans le doute les _volumes_ sont presque toujours le bon choix.
![Type de montage](images/types-of-mounts.png)
<small>Source : documentation officielle Docker</small>
Quel que soit le type de montage utilisé, les données seront présentées de la même façon au conteneur, c'est à dire sous la forme d'un dossier ou d'un fichier unique.
### Volumes
![Type de montage](images/types-of-mounts-volume.png)
- Les _volumes_ sont stockés sur le système de fichiers de l'hôte dans le dossier
`/var/lib/docker/volumes/`.
- Un volume est créé et _managé_ par Docker.
- Les processus autres que Docker ne devraient donc pas y modifier directement les données.
- Un volume peut être monté simultanément dans plusieurs conteneurs
* en lecture/écriture ou lecture seule,
* très utile pour partager des données entre conteneurs.
- Un volume est indépendant des conteneurs.
- Le contenu persiste même si aucun conteneur n'utilise le volume.
- Un volume doit être explicitement supprimé.
- un volume peut être nommé ou anonyme.
<small>(Un volume anonyme se voit attribuer un identifiant unique sur l'hôte)</small>
- Les volumes supportent la notion de _volume drivers_.
<small>(pour stocker les données sur des hôtes distant ou dans le cloud par exemple)</small>
- un volume peut être sauvegardé, restoré ou migré facilement d'un hôte Docker à l'autre.
<small>(Stopper les conteneurs utilisant le volume, sauvegarder le dossier `/var/lib/docker/volumes/<volume-name>/`).</small>
<!-- .slide: data-state="cheat-sheet" -->
1. Créer un volume
`$ docker volume create VOLUME`
2. Lister les volumes
`$ docker volume ls`
3. Inspecter un volume
`$ docker volume inspect VOLUME`
4. Supprimer un volume
`$ docker volume rm VOLUME`
5. Supprimer tous les volumes non-utilisés
`$ docker volume prune`
<!-- .slide: data-state="medium-code" -->
```none
$ docker volume create mon-volume
```
```none
$ docker volume inspect mon-volume
```
```json
[
{
"CreatedAt": "2018-01-16T10:15:51+01:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/mon-volume/_data",
"Name": "mon-volume",
"Options": {},
"Scope": "local"
}
]
```
* `docker volume inspect` permet de connaître le chemin réel du volume sur le système hôte.
### Bind mounts
![Type de montage](images/types-of-mounts-bind.png)
- Les _bind mounts_ permettent de "monter" n'importe quel fichier ou dossier du système hôte à l'intérieur du conteneur.
- Exemples d'utilisation de Bind mount :
* partager des fichiers de configuration entre l'hôte et des conteneurs.
* partager du code source entre l'hôte et un conteneur (sur un poste de développement).
- Le fichier ou le répertoire source peut ne pas exister au préalable sur l'hôte (il sera créé le cas échéant).
- __Attention !__
Si un dossier ou fichier critique pour le système hôte est monté dans le conteneur, ce dernier peut y accéder sans restriction.
### tmpfs mounts
![Type de montage](images/types-of-mounts-tmpfs.png)
- Les _tmpfs mounts_ sont stockés directement dans la mémoire de l'hôte.
- Les données sont donc volatiles et détruites en même temps que le conteneur qui les utilise (ou en cas de reboot du système).
- Les _tmpfs mounts_ ne peuvent pas être partagés entre plusieurs conteneurs.
### Exemples de montages
<!-- .slide: data-state="cheat-sheet small-code" -->
1. Monte un volume nommé
```none
$ docker run --detach \
--name apache \
--publish 8080:80 \
--mount source=mon-volume,target=/var/www/mon-app \
httpd:2.4
```
2. Monte un répertoire local (bind mount)
```none
$ docker run --detach \
--name apache \
--publish 8080:80 \
--mount type=bind,source=/home/debian/mon-app,destination=/var/www/mon-app \
httpd:2.4
```
3. Monte un répertoire local (bind mount) en read-only
```none
$ docker run --detach \
--name apache \
--publish 8080:80 \
--mount type=bind,source=/home/debian/mon-app,destination=/var/www/mon-app,readonly \
httpd:2.4
```
### -v ou --mount ?
- A l'origine , les options `-v` et `--volume` étaient utilisées pour les conteneurs _standalone_ et l'option `--mount` pour les _services_ Swarm.
- On peut utiliser les 2 syntaxes.
### Volumes et droits d'accès
Attention : les accès sur les fichiers
restent soumis aux droits Linux.
### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Docker Volumes](../travaux-pratiques/slides/docker/tp-volumes.html)</small>
### Accéder à la racine du système de fichiers du conteneur
<!-- .slide: data-state="cheat-sheet medium-code" -->
```none
# docker inspect -f '{{.State.Pid}}' mon-conteneur
11384
# cd /proc/11384/root/
total 52
drwxr-xr-x 19 root root 4096 déc. 18 17:26 ./
drwxr-xr-x 19 root root 4096 déc. 18 17:26 ../
drwxr-xr-x 2 root root 12288 mars 9 2017 bin/
drwxr-xr-x 5 root root 360 déc. 18 17:08 dev/
-rwxr-xr-x 1 root root 0 déc. 18 17:08 .dockerenv*
drwxr-xr-x 2 root root 4096 déc. 18 17:08 etc/
drwxr-xr-x 2 99 99 4096 mars 9 2017 home/
dr-xr-xr-x 263 root root 0 déc. 18 17:08 proc/
drwxr-xr-x 2 root root 4096 déc. 18 17:23 root/
dr-xr-xr-x 13 root root 0 déc. 18 17:11 sys/
drwxrwxrwt 2 root root 4096 mars 9 2017 tmp/
drwxr-xr-x 3 root root 4096 mars 9 2017 usr/
drwxr-xr-x 4 root root 4096 mars 9 2017 var/
```
<small>Spécification RunC : [https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md](https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md)</small>
### Connaître l'espace disque utilisé par Docker
`docker system df`
<!-- .slide: data-state="medium-code" -->
```none
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 23 2 3.871GB 3.794GB (98%)
Containers 11 0 2.989GB 2.989GB (100%)
Local Volumes 4 0 94.22MB 94.22MB (100%)
```
### Nettoyer le système
`docker system prune`
* Supprime les conteneurs arrêtés
* Supprimes les images qui n'ont plus de tag associé
* avec `-a` supprime aussi les images non utilisées
* Supprime les volumes orphelins
* Supprime les réseaux vides
## Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP application complète Web + DB](../travaux-pratiques/slides/docker/tp-web-db.html)</small>
## Docker Compose
Application multi-conteneurs
- _Compose_ est un outil permettant de configurer et déployer une application composée de plusieurs conteneurs.
- _Compose_ n'est pas inclus dans Docker il faut donc l'installer en plus.
<small>[https://docs.docker.com/compose/](https://docs.docker.com/compose/)</small>
- L'application (mono-conteneur ou multi-conteneurs) est décrite dans un fichier texte au format _yml_.
- Chaque service (conteneur) possède sa propre section de configuration.
- Par défaut un réseau personnalisé de type Bridge est automatiquement créé pour que l'ensemble des conteneurs de l'application :
* puissent communiquer entre eux,
* être isolés des autres conteneurs.
### docker-compose.yml
<!-- .slide: data-state="small-code" -->
```yaml
version: '3'
services:
web:
build: . # ici l'image sera construite à partir d'un Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
redis:
image: redis # ici on reprend une image déjà existante
volumes:
logvolume01: {}
```
<!-- .slide: data-state="medium-table" -->
Directive | Description
-------------------------|---------------------------------------
`image` | Spécifie l'image Docker à utiliser
`build` | Spécifie le chemin pour build l'image
`ports` | Configure la publication de ports
`depends_on` | Exprime la dépendance entre plusieurs services et ainsi l'ordre de lancement
`restart` | Spécifie le configuration de redémarrage du conteneur
`healthcheck` | Configure une vérification de la santé du service
`...` | https://docs.docker.com/compose/compose-file/
Derrière un proxy :
```yaml
version: "3"
services:
my-service:
build:
context: my-folder/
args:
- http_proxy=http:///my.proxy.url:3128
- https_proxy=https:///my.proxy.url:3128
```
Pour vérifier la syntaxe du fichier docker-compose.yml :
`$ docker-compose config`
Pour déployer la stack applicative
en une seule commande :
`$ docker-compose up -d`
Pour arrêter la stack sans supprimer les conteneurs :
`$ docker-compose stop`
Pour supprimer complètement la stack :
`$ docker-compose down`
Cela entraîne la suppression des conteneurs et des réseaux associés.
Pour afficher les logs
de tous les conteneurs de la stack :
`$ docker-compose logs`
### Le fichier `.env`
* Permet de déclarer des variables dont la valeur sera automatiquement substituée lors du traitement du fichier _docker-compose.yml_.
* Est localisé dans le même dossier que _docker-compose.yml_.
* `docker-compose config` permet de visualiser le fichier final.
`.env`
```bash
MA_VARIABLE=hello-world
MON_AUTRE_VARIABLE=bonjour
```
`docker-compose.yml`
```yaml
version: '3'
services:
hello:
image: ${MA_VARIABLE}
environment:
- env_var_name=${MON_AUTRE_VARIABLE}
```
### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Docker Compose](../travaux-pratiques/slides/docker/tp-compose.html)</small>
## Docker CMD --format
<!-- .slide: data-state="medium-code" -->
Permet d'utiliser des templates Go pour personnaliser l'affichage
```none
$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
```
```none
IMAGE ID REPOSITORY TAG
1afc387274f5 cheatsheet latest
258031686918 node 8.1.2
a2ff708b7413 debian latest
00f017a8c2a6 busybox latest
00f017a8c2a6 10.6.30.30:5000/mpoullain/busybox latest
```
<small>[https://docs.docker.com/engine/admin/formatting/](https://docs.docker.com/engine/admin/formatting/)</small>
## API du démon Docker
* Le démon Docker fourni une API qui permet de :
- récupérer des informations sur le démon et les objets Docker
- lancer des commandes
* Documentation : [https://docs.docker.com/develop/sdk/](https://docs.docker.com/develop/sdk/)
<!-- .slide: data-state="small-code" -->
Lister les conteneurs :
```none
$ curl --unix-socket /var/run/docker.sock http://1.24/containers/json | jq .
```
```json
[
{
"Id": "4ab7c5898ac9a594b42406c0afc2250b1b7da36e8966348c09e32fde84515608",
"Names": [
"/determined_bohr"
],
"Image": "debian:stretch",
"ImageID": "sha256:8626492fecd368469e92258dfcafe055f636c21a5865a98a0a6...",
"Command": "bash"
}
...
]
```
<!-- .slide: data-state="small-code" -->
Démarrer un conteneur :
```none
$ curl --unix-socket /var/run/docker.sock -X POST \
http://1.24/containers/4ab7c5898ac9/start
```
Afficher les logs d'un conteneur :
```none
$ curl --unix-socket /var/run/docker.sock \
http://1.24/containers/4ab7c5898ac9/logs?stdout=1
```
## Mode debug
Il est possible d'activer le mode debug
du démon Docker :
```none
root@node1: # sudo cat /etc/docker/daemon.json
{"debug":true}
```
```none
root@node1: # systemctl reload docker
```
```none
root@node1: # tail -f /var/log/syslog
c'est beaucoup plus verbeux !!
```

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/ctop.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 KiB

40
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/tp.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-bind.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-tmpfs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts-volume.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Pepiniere/docker/3.conteneurs-utilisation-avancee/images/types-of-mounts.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

88
Pepiniere/docker/3.conteneurs-utilisation-avancee/index.html

@ -0,0 +1,88 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SII - Conteneurs : utilisation avancée</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="revealjs/css/reset.css">
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/monokai.css">
<!-- Specific CSS override to reduce font size and align text on the left -->
<style>
.reveal .slides {
text-align: left;
}
</style>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="conteneurs-utilisation-avancee.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true },
{ src: 'revealjs/plugin/search/search.js', async: true },
{ src: 'revealjs/plugin/zoom-js/zoom.js', async: true },
{ src: 'revealjs/plugin/notes/notes.js', async: true }
]
});
Reveal.configure({
slideNumber: 'c/t'
});
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • janvier 2022</p>
</body>
</html>

1
Pepiniere/docker/3.conteneurs-utilisation-avancee/revealjs

@ -0,0 +1 @@
../revealjs

366
Pepiniere/docker/4.hotes-docker/hotes-docker.md

@ -0,0 +1,366 @@
# Docker
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
__Les hôtes Docker__
Maxime Poullain • Christian Tritten
## Où déployer ses conteneurs ?
* Bare-metal
* IaaS - cloud public
* Amazon Web Services (AWS)
* Google Cloud Engine (GCE)
* Microsoft Azure
* ...
* IaaS - cloud privé
* OpenStack
* CaaS
* Google Kubernetes Engine
* Amazon Elastic Container Service for Kubernetes
* ...
## Offres CaaS
### Google Kubernetes Engine
* Google gère l'infrastructure multi-masters de kubernetes.
* Kubernetes Engine est certifié conforme Kubernetes : compatibilité complète avec l'écosystème Kubernetes.
* Monitoring complet du cluster.
* Les applications Kubernetes standard sont entièrement compatibles et peuvent facilement être migrées vers Google Kubernetes Engine.
* C'est l'offre la plus complète du marché.
* [https://cloud.google.com/kubernetes-engine/](https://cloud.google.com/kubernetes-engine/)
### Amazon Elastic Container Service for Kubernetes
* Amazon gère l'infrastructure multi-masters de Kubernetes.
* Amazon EKS est certifié conforme Kubernetes : compatibilité complète avec l'écosystème Kubernetes.
* Les applications Kubernetes standard sont entièrement compatibles et peuvent facilement être migrées vers Amazon EKS.
* [https://aws.amazon.com/fr/eks/](https://aws.amazon.com/fr/eks/)
## Distributions classiques
Toutes les grandes distributions incluent désormais Docker dans leurs dépôts de paquets :
* Debian
* Ubuntu
* RedHat
* CentOS
Toutefois les versions de Docker proposées dans ces dépôts peuvent dater.
Pour pallier cela Docker Inc. maintient ses propres dépôts avec les versions à jour de ses produits :
* http://apt.dockerproject.org
* http://yum.dockerproject.org
## Systèmes d'exploitation spécialisés
* Systèmes légers, conçus et optimisés pour les conteneurs
* Peuvent intégrer nativement des fonctionnalités avancées
* Peuvent présenter une sécurité accrue
### RedHat Atomic
![Logo Atomic](images/logo-atomic.png)
* Développé par RedHat
* Système Linux léger et immutable (read only OS)
* Basé sur systemd
* Intègre une IHM dédiée : Cockpit
* Orchestration possible via Kubernetes
### CoreOS
![Logo CoreOS](images/logo-coreos.jpg)
* Basé sur systemd, etcd, rkt, fleet, flannel
* Peut faire tourner des conteneurs rkt et docker
* Fleet est un système d'init distribué basé sur systemd qui permet l'orchestration de conteneurs sur plusieurs hôtes.
* Intégration facile avec Kubernetes
* Production ready
### RancherOS
![Logo Rancher](images/logo-rancher.jpg)
* Système Linux minimaliste (20Mb) basé sur Docker
* Docker tourne directement au dessus du kernel, avec le PID 1 (en remplacement de... sysVinit / systemd)
* Tous les services habituels du "user-space" sont fournis sous forme de conteneurs Docker
* Les conteneurs applicatifs utilisent un daemon Docker séparé
#### Architecture de RancherOS
![Architecture RancherOS](images/rancheros-architecture.png)
### VMware Photon OS
![Logo Photon](images/logo-photon.jpg)
* Développé par VMware en opensource
* Système Linux léger optimisé pour les plateformes VMware
* Intégration avec vSphere et vCloud Air
* Supporte les conteneurs Docker et rkt
## Comment Déployer ?
- À la main ;-)
- Infrastructure as code
* Ansible
* Heat
* Terraform
* ...
### Infrastructure as Code
L'infrastructure cible est décrite dans des fichiers de configuration à l'aide d'une syntaxe spécifique.
Il devient possible gérer et versionner les modifications apportées à l'infrastructure.
Reconstruire, modifier partiellement ou dupliquer une infrastructure s'en trouve d'autant simplifié.
#### Exemple de workflow de déploiement
- Authentification auprès du fournisseur
- Allocation des ressources stockage et d'adressage IP
- Création du réseau
- Déploiement des VMs
- Configuration OS
- Installation et configuration du démon Docker (et/ou Swarm)
#### Ansible
![Ansible](images/logo-ansible.png)
_Ansible_ est un outil de gestion de configuration très populaire.
Sa force réside dans un écosystème riche de centaines de modules permettant de gérer à peu près tous les aspects d'une infrastructure ou d'un système.
A l'origine conçu comme outil de gestion de configuration pour les systèmes Linux, il peut désormais s'interfacer avec les cloud les plus populaires :
* AWS,
* GCP,
* Azure,
* OpenStack,
* VMware,
* et bien d'autres ...
Par exemple les modules Ansible pour OpenStack offrent les fonctionnalités suivantes :
* Keystone: users, groups, roles, projects
* Nova: servers, keypairs, security-groups, flavors
* Neutron: ports, network, subnets, routers, floating IPs
* Ironic: nodes, introspection
* Swift Objects
* Cinder volumes
* Glance images
Il offre également une gestion partielle de Docker via des modules dédiés :
* docker (D) - manage docker containers
* docker_container - manage docker containers
* docker_image - Manage docker images.
* docker_image_facts - Inspect docker images
* docker_login - Log into a Docker registry.
* docker_network - Manage Docker networks
* docker_service - Manage docker services and containers.
<!-- .slide: data-state="medium-code" -->
```
---
# Ansible and OpenStack automation
- name: VM deployment
hosts: docker-cluster
tasks:
...
- name: Create the network
os_network:
state: present
name: testnet
external: False
shared: False
register: testnet_network
- name: Create the test subnet
os_subnet:
state: present
network_name: "{{ testnet_network.id }}"
name: testnet_sub
ip_version: 4
cidr: 192.168.0.0/24
gateway_ip: 192.168.0.1
enable_dhcp: yes
dns_nameservers:
- 8.8.8.8
register: testnet_sub
- name: Create server instance
os_server:
state: present
name: testServer
image: debian
flavor: m1.small
security_groups: secgr
key_name: ansible_key
nics:
- net-id: "{{ testnet_network.id }}"
register: testServer
```
#### Heat
![Terraform](images/logo-heat.jpg)
_Heat_ est un outil d'orchestration spécifiquement conçu pour gérer des déploiements dans un environnement OpenStack.
Il permet le déploiement de l’infrastructure initiale puis de son évolution à l'aide de fichiers "Templates" qui décrivent les ressources à produire.
##### Exemple de template Heat
<!-- .slide: data-state="medium-code" -->
```
description: Deploys a Docker Swarm
parameters:
...
docker_node:
type: OS::Nova::Server
properties:
name: {get_param: hostname}
image: { get_param: instance_image }
flavor: { get_param: instance_flavor }
key_name: { get_param: ssh_key }
networks:
- port: { get_resource: docker_node_port }
user_data_format: RAW
user_data: |
#!/bin/bash
apt-get update
apt-get -y upgrade
wget -q https://test.docker.com/ -O /root/install_docker.sh
chmod 755 /root/install_docker.sh
/bin/bash /root/install_docker.sh
docker swarm join 10.0.2.21:2377
```
#### Terraform
![Terraform](images/logo-terraform.jpg)
_Terraform_ est un outil pour construire, modifier, versionner une infrastructure de manière sécurisé et efficiente.
Il gère les fournisseurs les plus populaires :
* IaaS (AWS, GCP, Microsoft Azure, OpenStack, ...)
* PaaS (Heroku, ...)
* SaaS services (Terraform Enterprise, DNSimple, CloudFlare, ...)
<!-- .slide: data-state="medium-code" -->
`variables.tf`
```
variable "network" {
type = "string"
default = "training-docker"
}
variable "nodes" {
default = 3
}
```
`formation.tf`
<!-- .slide: data-state="medium-code" -->
```
resource "openstack_compute_instance_v2" "formation" {
name = "training-${count.index + 1}"
count = "${var.nodes}"
flavor_name = "m1.tiny"
key_pair = "training-keypair"
region = "RegionOne"
block_device {
uuid = "724d7bd0-2ea3-4e39-b3d8-dd394ea933f1"
source_type = "image"
volume_size = 8
boot_index = 0
destination_type = "volume"
delete_on_termination = true
}
network {
name = "${var.network}"
}
```
`formation.tf (suite)`
<!-- .slide: data-state="medium-code" -->
```
provisioner "remote-exec" {
inline = [
"sudo apt update -y",
"sudo apt upgrade -y",
"sudo apt install -y curl",
"sudo curl -fsSL https://get.docker.com/ | sh",
]
}
}
```

40
Pepiniere/docker/4.hotes-docker/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-ansible.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-atomic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-coreos.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-docker-machine.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-heat.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-photon.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-rancher.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/logo-terraform.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/machine.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/machine2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/rancheros-architecture.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
Pepiniere/docker/4.hotes-docker/images/tp.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

72
Pepiniere/docker/4.hotes-docker/index.html

@ -0,0 +1,72 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SII - Hôtes Docker</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<link rel="stylesheet" href="revealjs/css/custom.css"> <!-- your custom styles -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="hotes-docker.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/lib/js/head.min.js"></script>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
history: true,
// Transition style
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Transition style for full page slide backgrounds
backgroundTransition: 'none', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js' },
{ src: 'revealjs/plugin/markdown/markdown.js' },
{ src: 'revealjs/plugin/notes/notes.js', async: true },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
// Slide number formatting can be configured using these variables:
// "h.v": horizontal . vertical slide number (default)
// "h/v": horizontal / vertical slide number
// "c": flattened slide number
// "c/t": flattened slide number / total slides
Reveal.configure({ slideNumber: 'c/t' });
Reveal.configure({ transition: 'none' });
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • septembre 2018</p>
</body>
</html>

1
Pepiniere/docker/4.hotes-docker/revealjs

@ -0,0 +1 @@
../revealjs

BIN
Pepiniere/docker/5.swarm/images/container-mess.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
Pepiniere/docker/5.swarm/images/docker-networking-overlay-addresses.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
Pepiniere/docker/5.swarm/images/docker-networking-overlay-routing.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
Pepiniere/docker/5.swarm/images/docker-networking-overlay.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

40
Pepiniere/docker/5.swarm/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pepiniere/docker/5.swarm/images/glusterfs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
Pepiniere/docker/5.swarm/images/orchestration-principle.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
Pepiniere/docker/5.swarm/images/swarm-network-ingress-lb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
Pepiniere/docker/5.swarm/images/swarm-network-ingress-routing-mesh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
Pepiniere/docker/5.swarm/images/swarm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
Pepiniere/docker/5.swarm/images/swarm2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
Pepiniere/docker/5.swarm/images/swarm3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
Pepiniere/docker/5.swarm/images/tp.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
Pepiniere/docker/5.swarm/images/traefik.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

88
Pepiniere/docker/5.swarm/index.html

@ -0,0 +1,88 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SII - Docker Swarm</title>
<link rel="icon" type="image/png" href="revealjs/images/favicon-logo-sii.png" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="revealjs/css/reset.css">
<link rel="stylesheet" href="revealjs/css/reveal.css">
<link rel="stylesheet" href="revealjs/css/theme/sii.css"> <!-- SII theme -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="revealjs/lib/css/monokai.css">
<!-- Specific CSS override to reduce font size and align text on the left -->
<style>
.reveal .slides {
text-align: left;
}
</style>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'revealjs/css/print/pdf.css' : 'revealjs/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="swarm.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="UTF-8">
</section>
</div>
</div>
<script src="revealjs/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'revealjs/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'revealjs/plugin/highlight/highlight.js', async: true },
{ src: 'revealjs/plugin/search/search.js', async: true },
{ src: 'revealjs/plugin/zoom-js/zoom.js', async: true },
{ src: 'revealjs/plugin/notes/notes.js', async: true }
]
});
Reveal.configure({
slideNumber: 'c/t'
});
</script>
<img class="logo" src="revealjs/images/logo-sii.svg" />
<p class="footer">SII • www.groupe-sii.com • janvier 2022</p>
</body>
</html>

1
Pepiniere/docker/5.swarm/revealjs

@ -0,0 +1 @@
../revealjs

750
Pepiniere/docker/5.swarm/swarm.md

@ -0,0 +1,750 @@
# Docker
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
**Swarm**
Maxime Poullain • Christian Tritten
<!-- .slide: data-background="images/container-mess.jpg" data-state="nologo-slide" -->
<!-- .slide: data-background="images/container-mess.jpg" data-state="nologo-slide" style="text-align: center" -->
Le passage à l'échelle d'une infrastructure Docker
nécessite des outils adaptés.<!-- .element: style="color:white; background-color: black" -->
## Orchestrateur de conteneurs
Un orchestrateur de conteneurs permet
de construire (facilement) un système distribué.
### Fonctionnalités d'un orchestrateur (1/2)
- Gestion d'un ensemble de machines (cluster)
<small>Extension horizontale de la capacité du système par l'ajout de nouvelles machines</small>
- Gestion des déploiements de conteneurs (scheduler)
<small>Selon des critères : label, affinité, charge, ...</small>
- Gestion de la résilience
<small>Via des tests de santé périodique sur les conteneurs et les hôtes</small>
### Fonctionnalités d'un orchestrateur (2/2)
- Gestion d'un réseau distribué
<small>Qui s'étend sur l'ensemble des machines du cluster</small>
- Gestion de la haute disponibilité des applications
<small>En créant plusieurs instances d'une même application sur des hôtes différents</small>
- Gestion de la découverte de services
<small>Pour détecter automatiquement les nouvelles instances d'une application</small>
### Principe d'un orchestrateur
![Schema de principe](images/orchestration-principle.jpg)
### Les principaux orchestrateurs
- Swarm (Docker)
- Kubernetes (Google)
- OpenShift (RedHat)
- Mesos/Marathon (Apache)
- Nomad (HashiCorp)
- Rancher
- ...
## Docker Swarm
![Logo Docker Swarm](images/swarm.png) <!-- .element: width="200px" -->
- Orchestrateur maison de Docker Inc.
- Très bien intégré dans Docker (rien à installer)
- Facile à prendre en main
- Solution idéale pour les petits environnements
## Swarm - Fonctionnalités
- Gestion du cluster
- Ajout/retrait de machines
- Maintient opérationnel de l'état du cluster
- Chiffrement des transactions entre les noeuds (control plane)
- Orchestration des déploiements
- Placement des conteneurs
- Stratégies / Filtres
- Gestion d'applications multi-conteneurs (Stack)
- Réseau distribué (Overlay)
- Mise à l'échelle
- Équilibrage de charge
- Gestion de la résilience
## Concepts
La terminologie Swarm
* node
* task
* service
* stack
* network
* secret / config
### Node
* Un noeud (_node_) est une instance de Docker Engine intégrée dans le cluster Docker Swarm.
* On peut joindre autant de noeuds que nécessaire au cluster.
* On peut également retirer des noeuds si besoin.
Deux types de noeuds :
* __Manager__
- Maintient l'état du cluster
- Orchestre les tâches (_tasks_) sur les noeuds actifs
* __Worker__
- Reçoit les tâches (_tasks_) envoyées par les noeuds manager
- Exécute les tâches localement
* Par défaut les noeuds de type _manager_ sont aussi des _worker_.
* Il est possible de configurer un noeud manager pour qu'il fasse seulement office de manager (`drain`).
* Un noeud peut changer de rôle au cours de son existence en passant de worker à manager ou inversement (`promote/demote`).
![Schema Docker Swarm](images/swarm2.png) <!-- .element: width="800px" -->
Un noeud _Manager_ peut être dans l'un des états suivants :
* _Leader_ : noeud manager primaire du système, il prend les décisions d'orchestration au sein du cluster.
* _Reachable_ : noeud pouvant devenir leader en cas de défaillance de l'actuel noeud leader.
* _Unavailable_ : noeud non joignable d'un point de vue réseau.
* Afin d'augmenter la résilience du cluster, il est recommandé d'opter pour un nombre impair de noeuds de type _manager_ :
* Avec _3_ noeuds managers, le système peut survivre à une perte maximum d'_1 manager_.
* Avec _5_ noeuds managers, le système peut survivre à une perte maximum de _2 managers_.
* L'augmentation du nombre de noeuds manager ne procure pas de meilleures performances au système global.
Managers | Majorité Quorum | Tolérence de perte
:-------:|:---------------:|:-----------------:
1 | 1 | 0
2 | 2 | 0
3 | 2 | 1
4 | 3 | 1
5 | 3 | 2
6 | 4 | 2
7 | 4 | 3
8 | 5 | 3
9 | 5 | 4
Niveaux de disponibilité d'un noeud :
- Active
- Pause
- Drain
Niveau _Active_ :
* Le noeud peut recevoir de nouvelles tâches de la part de l'orchestrateur.
* C'est le niveau de fonctionnement normal.
Niveau _Pause_ :
* Le noeud ne peut plus recevoir de nouvelles tâches de la part de l'orchestrateur.
* Les éventuelles tâches en cours d'exécution sur ce noeud continuent d'être exécutées sur ce noeud.
Niveau _Drain_ :
* Le noeud ne peut plus recevoir de nouvelles tâches de la part de l'orchestrateur.
* Les éventuelles tâches en cours d'exécution sur ce noeud sont automatiquement basculées sur un noeud actif.
* Ce mode est prévu pour la maintenance de l'hôte.
### Task
* Une tâche (_task_) est l'unité atomique directement orchestrable au sein du cluster Swarm.
* Une tâche correspond à l'exécution d'_un conteneur_ sur _un noeud_ du cluster.
* Les noeuds de type _manager_ assignent les _tâches_ directement aux noeuds de niveau _active_ selon le mode de mise à l'échelle défini pour le service (_replicated/global_).
* Si l'exécution d'une tâche échoue, l'orchestrateur la supprime et en créé une nouvelle en remplacement.
### Service
* Un service est la formalisation de tâches (_tasks_) qui seront exécutées par les noeuds de niveau active.
* Un service peut donc avoir plusieurs tâches.
2 modes pour la scalabilité d'un service :
* _Replicated_ : le manager génère des tâches de type réplica pour le service jusqu'à atteindre le nombre de réplicas souhaité et les distribue sur les noeuds active du cluster.
* _Global_ : le manager lance une tâche du service sur chaque noeud disponible dans le cluster, ce qui peut se révéler pratique dans le cas d'agents de monitoring par exemple.
La montée de version pour un _service_ donné peut être gérée de façon séquentielle (une tâche remplacée après l'autre) ou parallèle n tâches du service remplacées en même temps).
### Overlay Network
* Un réseau de type `overlay` est distribué sur l'ensemble des noeuds du cluster swarm.
* Il permet de connecter un ou plusieurs services à l'intérieur du cluster Swarm sans avoir besoin de publier des ports réseau sur les hôtes.
* La technologie `VXLAN` est utilisée pour créer les réseaux overlay au dessus du réseau existant.
* Par défaut tout le trafic transitant sur un réseau overlay est en clair (pour des raisons de performance).
* Il est possible de chiffrer un réseau overlay donné (Kernel `IPSEC` encryption) via l'ajout d'une option lors de sa création.
Le tunnel ainsi créé permet aux conteneurs
de communiquer même s'ils sont placés
sur des hôtes différents.
![Réseau Overlay](images/docker-networking-overlay.jpg) <!-- .element: width="650px" -->
Chaque conteneur démarré sur un réseau overlay se voit attribuer deux adresses IP : une pour la communication entre les conteneurs du réseau <small>(10.0.0.x)</small> et une pour la VXLAN Tunnel End Point address (VTEP) <small>(172.18.0.x)</small>.
![Réseau Overlay](images/docker-networking-overlay-addresses.jpg) <!-- .element: width="650px" -->
Swarm permet de publier des services à l'extérieur en assignant un _PublishedPort_ à un service donné.
Un port ainsi publié est ouvert sur tous les noeuds du cluster. Les requêtes sont routées automatiquement.
![Réseau Overlay](images/docker-networking-overlay-routing.jpg) <!-- .element: width="650px" -->
#### VIP et DNS
* Par défaut une adresse IP virtuelle (VIP) et une entrée DNS sont créées pour chaque service géré par Swarm, le rendant ainsi disponible par son nom aux conteneurs présents sur le même réseau overlay.
* Swarm intègre un service de _DNS interne_ permettant de résoudre facilement le nom d'un service.
#### Load Balancing interne
Swarm utilise un mécanisme interne de répartition de charge pour distribuer les requêtes aux services.
![Réseau Ingress](images/swarm-network-ingress-routing-mesh.png)
#### Load Balancing externe
Des composants externes tels des _load balancers_ peuvent être placés en amont du cluster Swarm et accéder à un service sur le port publié (_PublishedPort_) à partir de n'importe quel noeud du cluster.
Reverse Proxy et Load Balancing HAProxy
![Réseau Ingress](images/swarm-network-ingress-lb.png)
Swarm se charge ensuite de router de façon transparente les requêtes à destination du service sur l'un des noeuds exécutant une tâche correspondant au service demandé.
### Stack
* Une _stack_ est la formalisation d'une application composée d'un ou plusieurs services.
* Elle se présente sous la forme d'un fichier de description `docker-compose.yml`
* Il devient ainsi possible de déployer une application complexe sur l'ensemble du cluster.
#### Stack = Swarm + Compose
![Schema Docker Swarm](images/swarm3.png) <!-- .element: width="800px" -->
### Secret
Gestion sécurisée des données sensibles.
* Exemples de données sensibles :
- Nom d'utilisateur
- Mot de passe
- Certificats et clés TLS
- Clés SSH
- Nom d'une base de données
- nom d'un serveur interne
- Chaines de caractères ou fichier binaire (< 500 Kb)
* Limitation : les secrets sont _utilisables seulement avec les services Swarm_.
* Les secrets sont chiffrés et stokés par Swarm.
* Les secrets sont distribués aux différents noeuds du cluster et transmis seulement aux services qui en font la demande.
* Les secrets sont présentés aux conteneurs d'un service sous la formation d'un dossier en mémoire RAM monté dans `/run/secrets`. Ce dossier contient les secrets déchiffrés.
* A partir de Docker 17.06 il est possible de définir l'emplacement où un secret doit être monté à l'intérieur du conteneur.
### Config
* Le concept de `config` est disponible à partir de Docker 17.06.
* Il s'agit de l'équivalent des secrets mais pour des données non sensibles (par exemple un fichier de configuration).
* Limitation : les configs sont _utilisables seulement avec les services Swarm_.
* Le but des configs est d'éviter :
- les montages de type `bind-mount` pour faire de la configuration,
- l'utilisation de variables d'environnement.
* Les données des configs ne sont pas chiffrées et sont montées directement dans système de fichiers du conteneur (sans utilisation de RAM disks).
## Manipuler Swarm
Les fondamentaux
### Initialisation du cluster
Sur l'hôte Docker qui sera le premier _manager_ du cluster
`$ docker swarm init --advertise-addr MANAGER-IP`
<!-- .slide: data-state="small-code" -->
```nohighlight
Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-2scvxnrfa53pxfcf7w1qvdm25ofv6lg776tszvnjbtg727ozau \
192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow
the instructions.Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz)
is now a manager.
```
Pour ajouter un _worker_ ou un _manager_ au cluster une seule commande suffit.
<!-- .slide: data-state="cheat-sheet small-code" -->
1. On peut retrouver cette commande depuis le premier manager :
`$ docker swarm join-token worker`
```nohighlight
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-2scvxnrfa53pxfcf7w1qvdm25ofv6lg776tszvnjbtg727ozau \
192.168.99.100:2377
```
`$ docker swarm join-token manager`
```nohighlight
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-2scvxnrfa53pxfcf7w1qvdm25ofv6lg776tszvnjbtg727ozau \
192.168.99.100:2377
```
Par exemple, on ajoute un _worker_ en jouant la commande récupérée précédemment.
Sur le futur noeud _worker_ :
<!-- .slide: data-state="small-code" -->
```nohighlight
$ docker swarm join \
--token SWMTKN-1-2scvxnrfa53pxfcf7w1qvdm25ofv6lg776tszvnjbtg727ozau \
172.16.2.11:2377
This node joined a swarm as a worker.
```
Pour administrer les noeuds du Swarm on doit exécuter les commandes depuis un _manager_.
Pour afficher les liste des noeuds :
`$ docker node ls`
<!-- .slide: data-state="small-code" -->
```nohighlight
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3raehvrbi5u0rz4y2kaqreakr * docker-node-1 Ready Active Leader
jel9o08m2tcfmpyryt1d3nr59 docker-node-2 Ready Active Reachable
lennvj9r57wgl6cwi5k7ac0cb docker-node-5 Ready Active
om4pm2xcc9fl4uyehzeuwfklm docker-node-3 Ready Active Reachable
ynj6x2tblko0ulvaz6ojrxueu docker-node-4 Ready Active
```
<!-- .slide: data-state="cheat-sheet" -->
1. Pour transformer un noeud _worker_ en _manager_ :
`$ docker node promote NODE`
2. Et inversement :
`$ docker node demote NODE`
3. Pour supprimer un noeud du Swarm:
`$ docker node rm NODE`
#### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Initialisation d'un cluster Swarm](../travaux-pratiques/slides/swarm/tp-swarm-init.html)</small>
### Services
<!-- .slide: data-state="medium-code" -->
Pour lancer un service sur le cluster Swarm :
`docker service create`
```nohighlight
$ docker service create --name busybox busybox sleep 600
```
`docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]`
Créer un nouveau service
<!-- .slide: data-state="medium-table" -->
Option | Description
-------------------------|---------------------------------------
`--constraint` | Placement constraints
`--network` | Network attachments
`--name` | Service name
`--publish` | Publish a port as a node port
`--replicas` | Number of tasks
`...` | <small>[https://docs.docker.com/engine/reference/ commandline/service_create/](https://docs.docker.com/engine/reference/commandline/service_create/)</small>
<!-- .slide: data-state="cheat-sheet" data-state="small-code" -->
1. Lister les services du cluster :
`$ docker service ls`
```nohighlight
ID NAME MODE REPLICAS IMAGE
uutgao0sp6qi busybox replicated 1/1 busybox:latest
```
2. Supprimer un service :
`$ docker service rm SERVICE`
3. Mettre à jour un service avec :
`$ docker service update [OPTIONS] SERVICE`
4. Pour revenir à la version précédente de la configuration d'un service :
`$ docker service rollback SERVICE`
Par exemple, il est possible d'ajouter une contrainte sur un service pour qu'il ne démarre que sur un noeud spécifique.
<!-- .slide: data-state="small-code" -->
```bash
$ docker service update --constraint-add 'node.hostname == <NODE.HOSTNAME>' busybox
```
On peut revenir à la configuration précédente en utilisant la fonctionnalité de rollback.
```nohighlight
$ docker service rollback busybox
```
Attention, on ne peut pas revenir en arrière plusieurs fois d'affilé.
<!-- .slide: data-state="small-code" -->
Pour voir en détail les _tasks_ d'un service :
`docker service ps SERVICE`
```nohighlight
$ docker service ps busybox
ID NAME IMAGE NODE DESIRED STATE
uzb1ovvp4tnx busybox.1 busybox:latest docker-node-1 Running
cs5vud4gpq1n \_ busybox.1 busybox:latest docker-node-2 Shutdown
```
```nohighlight
$ docker service ps busybox --filter desired-state=Running
ID NAME IMAGE NODE DESIRED STATE
uzb1ovvp4tnx busybox.1 busybox:latest docker-node-1 Running
```
Pour mettre à l'échelle un service :
`docker service scale SERVICE=REPLICAS`
<!-- .slide: data-state="small-code" -->
```nohighlight
$ docker service scale busybox=3
busybox scaled to 3
$ docker service ps busybox
ID NAME IMAGE NODE DESIRED STATE
uzb1ovvp4tnx busybox.1 busybox:latest docker-node-1 Running
cs5vud4gpq1n \_ busybox.1 busybox:latest docker-node-2 Shutdown
pmdpmocyf106 busybox.2 busybox:latest docker-node-1 Running
hzk9x2ak8win busybox.3 busybox:latest docker-node-1 Running
```
Pour déployer une _stack_
`docker stack deploy [OPTIONS] STACK`
* Une multitude de nouvelles options a été ajouté dans le version 3 du format _docker-compose.yml_.
* https://docs.docker.com/compose/compose-file/
`docker stack COMMAND`
Gère une stack Docker
Commande | Description
- | -
`deploy` | Déploie une nouvelle stack ou met à jour une stack existante
`ls` | Liste les stacks
`services` | Liste les services de la stack
`ps` | Liste les tasks de la stack
`rm` | Supprime la stack
### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Déploiement d'applications sur Swarm](../travaux-pratiques/slides/swarm/tp-swarm.html)</small>
<small>[TP Docker Secret](../travaux-pratiques/slides/swarm/tp-secrets.html)</small>
<small>[TP Rolling Update](../travaux-pratiques/slides/swarm/tp-rolling-update.html)</small>
## Dépannage
Se sortir de situations difficiles
### Dépannage Manager
Si un noeud `Manager` est défaillant, la solution peut être de lui faire quitter puis rejoindre le cluster.
1. Rétrograder le Manager en worker :
`docker node demote <MANAGER>`
2. Supprimer le Node du cluster :
`docker node rm <NODE>`.
3. Re-joindre le Node au cluster :
`docker swarm join`.
<small>Source : [https://docs.docker.com/engine/swarm/admin_guide/#troubleshoot-a-manager-node](https://docs.docker.com/engine/swarm/admin_guide/#troubleshoot-a-manager-node)</small>
### Sauvegarde de l'état d'un Manager
1. Si l'auto-lock est activé, le désactiver.
2. Stopper Docker sur l'hôte cible.
3. Sauvegarder le répertoire `/var/lib/docker/swarm`
4. Redémarrer Docker.
<small>Source : [https://docs.docker.com/engine/swarm/admin_guide/#back-up-the-swarm](https://docs.docker.com/engine/swarm/admin_guide/#back-up-the-swarm)</small>
### Restaurer l'état d'un Manager
1. Stopper Docker sur l'hôte cible.
2. Supprimer le dossier `/var/lib/docker/swarm`
3. Restaurer le dossier `/var/lib/docker/swarm` depuis une sauvegarde.
4. Démarrer Docker sur le nouveau noeud, et réinitialiser le noeud avec
`docker swarm init --force-new-cluster`
5. Vérifier l'état du swarm.
<small>Source : [https://docs.docker.com/engine/swarm/admin_guide/#recover-from-disaster](https://docs.docker.com/engine/swarm/admin_guide/#recover-from-disaster)</small>
### Logging
Les logs des démons Docker et Swarm se situent :
<!-- .slide: data-state="small-table" -->
Operating system | Location
-----------------------|------------------------
RHEL, Oracle Linux | `/var/log/messages`
Debian | `/var/log/daemon.log`
Ubuntu 16.04+, CentOS | Use the command `journalctl -u docker.service`
Ubuntu 14.10- | `/var/log/upstart/docker.log`
macOS | `~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring`
Windows | `AppData\Local`
### Enable Debugging
Pour activer le debugging du démon Docker, éditer le fichier `/etc/docker/daemon.json` pour y ajouter :
```
{
"debug": true
}
```
Rédémarrer le démon ou recharger sa configuration.
<small>Source : [https://docs.docker.com/engine/admin/](https://docs.docker.com/engine/admin/#force-a-stack-trace-to-be-logged)</small>
## Reverse Proxy
Accéder au cluster Swarm depuis l'extérieur
### Traefik
https://traefik.io/
* Reverse Proxy HTTP & Load Balancer
* Rapide
* Supporte une grande variété de backends
(Docker, Swarm, Kubernetes, Mesos/Marathon, Consul, Etcd, Rest API, file...)
* Configuration dynamique pour simplifier l'accès aux applications orientées micro-services
* Gestion automatique des certificats TLS avec Let's Encrypt
* Interface web de supervision
### Fonctionnement
* Traefik se lance dans un conteneur sur le cluster et se connecte à la socket Docker pour écouter les évènements du cluster.
* Les conteneurs applicatifs déclarent des _labels traefik.*_ afin de se signaler auprès de Traefik.
### Schéma de principe
![Schema Traefik](images/traefik.png)
### Travaux pratiques
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
![Travaux pratiques](images/tp.gif)
<small>[TP Traefik](../travaux-pratiques/slides/swarm/tp-traefik.html)</small>
### Plus de détails sur Traefik v2
* https://blog.containo.us/traefik-2-0-docker-101-fc2893944b9d
* https://blog.containo.us/traefik-2-tls-101-23b4fbee81f1
## Stockage distribué
GlusterFS
Lorsque des applications sont déployées sur plusieurs noeuds, il devient nécessaire de :
* Rendre certaines données accessibles sur tous les noeuds du cluster Swarm.
* Rendre possible la persistance des données des conteneurs sur n'importe quel noeud.
* GlusterFS est un système de fichiers libre distribué, qui permet de stocker jusqu'à plusieurs pétaoctets.
* GlusterFS réplique automatiquement les données sur tous les noeuds du cluster de stockage.
GlusterFS repose sur un modèle client-serveur.
* Les serveurs sont déployés comme des "briques de stockage", chaque serveur exécutant un daemon qui exporte un système de fichier local comme un _volume_.
* Les clients sont sans état, et ne communiquent pas entre eux. Ils peuvent monter les volumes exportés par les serveurs.
![GlusterFS](images/glusterfs.png)

40
Pepiniere/docker/6.outils-administration/images/docker-wave-whale.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="842px" height="150px" viewBox="0 0 842 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>docker_wave_whale</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs/>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="docker_whale" sketch:type="MSLayerGroup" transform="translate(0.000000, 1.000000)">
<g id="Group" transform="translate(15.000000, 71.000000)" fill="#28B8EB" sketch:type="MSShapeGroup">
<path d="M564.773,20.978 L429.446,20.978 L412.71,20.978 L277.387,20.978 C283.644,18.195 297.185,14.435 294.952,0.051 C306.331,23.143 333.77,16.253 340.696,4.867 C348.408,24.481 393.302,17.025 396.433,1.744 C406.099,21.641 436.057,21.641 445.726,1.744 C448.858,17.025 493.752,24.481 501.464,4.867 C508.39,16.253 535.827,23.143 547.207,0.051 C544.973,14.435 558.515,18.195 564.773,20.978" id="Shape"/>
<path d="M287.029,20.978 L151.702,20.978 L134.966,20.978 L-0.357,20.978 C5.9,18.195 19.441,14.435 17.208,0.051 C28.587,23.143 56.026,16.253 62.952,4.867 C70.664,24.481 115.558,17.025 118.689,1.744 C128.355,21.641 158.313,21.641 167.982,1.744 C171.114,17.025 216.008,24.481 223.72,4.867 C230.646,16.253 258.083,23.143 269.463,0.051 C267.229,14.435 280.771,18.195 287.029,20.978" id="Shape"/>
<path d="M827.067,20.978 L691.74,20.978 L675.004,20.978 L539.681,20.978 C545.938,18.195 559.479,14.435 557.246,0.051 C568.625,23.143 596.064,16.253 602.99,4.867 C610.702,24.481 655.596,17.025 658.727,1.744 C668.393,21.641 698.351,21.641 708.02,1.744 C711.152,17.025 756.046,24.481 763.758,4.867 C770.684,16.253 798.121,23.143 809.501,0.051 C807.267,14.435 820.809,18.195 827.067,20.978" id="Shape"/>
</g>
<g id="Group" transform="translate(286.000000, 0.000000)" sketch:type="MSShapeGroup">
<path d="M152.064,46.599 L175.587,46.599 L175.587,70.645 L187.481,70.645 C192.974,70.645 198.623,69.667 203.825,67.904 C206.38,67.038 209.249,65.832 211.77,64.315 C208.45,59.979 206.755,54.506 206.255,49.11 C205.578,41.77 207.058,32.217 212.026,26.473 L214.498,23.613 L217.445,25.981 C224.863,31.941 231.102,40.27 232.202,49.764 C241.135,47.137 251.622,47.758 259.496,52.302 L262.726,54.166 L261.026,57.485 C254.367,70.481 240.446,74.506 226.836,73.794 C206.47,124.519 162.131,148.535 108.369,148.535 C80.594,148.535 55.111,138.151 40.6,113.509 L40.363,113.106 L38.248,108.805 C33.343,97.958 31.714,86.075 32.819,74.202 L33.151,70.645 L53.266,70.645 L53.266,46.599 L76.788,46.599 L76.788,23.076 L123.835,23.076 L123.835,-0.448 L152.064,-0.448 L152.064,46.599 L152.064,46.599 Z" id="Shape" fill="#3A4E55"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L36.724,74.566 C35.52,87.494 37.789,99.398 42.973,109.589 L44.688,112.725 C45.774,114.568 46.96,116.347 48.242,118.059 L48.243,118.059 C54.44,118.458 60.155,118.595 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.576,121.477 71.654,121.904 C72.065,121.91 71.226,121.966 71.224,121.966 C70.989,121.98 70.692,122.014 70.456,122.027 C67.732,122.18 64.792,122.212 61.786,122.212 C58.499,122.212 55.26,122.15 51.64,121.966 L51.548,122.027 C64.109,136.145 83.75,144.613 108.368,144.613 C160.473,144.613 204.668,121.517 224.238,69.662 C238.122,71.086 251.466,67.546 257.536,55.698 C247.868,50.118 235.434,51.897 228.275,55.495" id="Shape" fill="#00AADA"/>
<path d="M228.275,55.495 C229.852,43.237 220.679,33.609 214.99,29.038 C208.434,36.618 207.415,56.482 217.701,64.845 C211.961,69.944 199.866,74.566 187.481,74.566 L45.651,74.566 C45.036,94.364 52.383,109.394 65.383,118.48 L65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.509 92.373,115.011 92.7,115.956 C93.026,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.115,121.6 71.194,122.027 C71.192,122.027 71.026,121.867 71.024,121.867 C88.756,130.963 114.468,130.931 143.946,119.607 C177.001,106.91 207.757,82.717 229.219,55.047 C228.895,55.193 228.58,55.342 228.275,55.495" id="Shape" fill="#27B9EC"/>
<path d="M37.006,90.273 C37.943,97.198 39.968,103.682 42.973,109.589 L44.688,112.726 C45.774,114.568 46.96,116.347 48.243,118.059 C54.442,118.458 60.157,118.595 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.146,121.539 71.224,121.966 C70.987,121.98 70.572,121.983 70.333,121.997 C67.61,122.15 64.7,122.243 61.693,122.243 C58.407,122.243 55.045,122.18 51.426,121.997 C63.987,136.115 83.75,144.613 108.368,144.613 C152.975,144.613 191.783,127.682 214.307,90.273 L37.006,90.273 L37.006,90.273 Z" id="Shape" fill="#088CB9"/>
<path d="M47.008,90.273 C49.675,102.433 56.083,111.978 65.386,118.48 C75.659,118.252 84.042,117.04 90.396,114.838 C91.342,114.51 92.373,115.011 92.7,115.956 C93.027,116.901 92.526,117.933 91.581,118.26 C90.737,118.553 89.856,118.827 88.946,119.086 C88.945,119.087 88.944,119.087 88.943,119.087 C83.94,120.515 78.023,121.539 71.102,121.966 C88.832,131.061 114.47,130.93 143.946,119.608 C161.779,112.756 178.941,102.557 194.338,90.273 L47.008,90.273 L47.008,90.273 Z" id="Shape" fill="#039CC7"/>
<path d="M74.265,52.218 L75.875,52.218 L75.875,69.208 L74.265,69.208 L74.265,52.218 L74.265,52.218 Z M71.176,52.218 L72.849,52.218 L72.849,69.208 L71.176,69.208 L71.176,52.218 L71.176,52.218 Z M68.087,52.218 L69.76,52.218 L69.76,69.208 L68.087,69.208 L68.087,52.218 L68.087,52.218 Z M64.997,52.218 L66.671,52.218 L66.671,69.208 L64.997,69.208 L64.997,52.218 L64.997,52.218 Z M61.909,52.218 L63.582,52.218 L63.582,69.208 L61.909,69.208 L61.909,52.218 L61.909,52.218 Z M58.884,52.218 L60.493,52.218 L60.493,69.208 L58.884,69.208 L58.884,52.218 L58.884,52.218 Z M57.186,50.519 L77.572,50.519 L77.572,70.907 L57.186,70.907 L57.186,50.519 L57.186,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,28.695 L99.399,28.695 L99.399,45.684 L97.788,45.684 L97.788,28.695 L97.788,28.695 Z M94.7,28.695 L96.373,28.695 L96.373,45.684 L94.7,45.684 L94.7,28.695 L94.7,28.695 Z M91.61,28.695 L93.283,28.695 L93.283,45.684 L91.61,45.684 L91.61,28.695 L91.61,28.695 Z M88.521,28.695 L90.194,28.695 L90.194,45.684 L88.521,45.684 L88.521,28.695 L88.521,28.695 Z M85.433,28.695 L87.105,28.695 L87.105,45.684 L85.433,45.684 L85.433,28.695 L85.433,28.695 Z M82.408,28.695 L84.016,28.695 L84.016,45.684 L82.408,45.684 L82.408,28.695 L82.408,28.695 Z M80.708,26.996 L101.097,26.996 L101.097,47.383 L80.708,47.383 L80.708,26.996 L80.708,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M97.788,52.218 L99.399,52.218 L99.399,69.208 L97.788,69.208 L97.788,52.218 L97.788,52.218 Z M94.7,52.218 L96.373,52.218 L96.373,69.208 L94.7,69.208 L94.7,52.218 L94.7,52.218 Z M91.61,52.218 L93.283,52.218 L93.283,69.208 L91.61,69.208 L91.61,52.218 L91.61,52.218 Z M88.521,52.218 L90.194,52.218 L90.194,69.208 L88.521,69.208 L88.521,52.218 L88.521,52.218 Z M85.433,52.218 L87.105,52.218 L87.105,69.208 L85.433,69.208 L85.433,52.218 L85.433,52.218 Z M82.408,52.218 L84.016,52.218 L84.016,69.208 L82.408,69.208 L82.408,52.218 L82.408,52.218 Z M80.708,50.519 L101.097,50.519 L101.097,70.907 L80.708,70.907 L80.708,50.519 L80.708,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M121.312,52.218 L122.921,52.218 L122.921,69.208 L121.312,69.208 L121.312,52.218 L121.312,52.218 Z M118.223,52.218 L119.897,52.218 L119.897,69.208 L118.223,69.208 L118.223,52.218 L118.223,52.218 Z M115.134,52.218 L116.808,52.218 L116.808,69.208 L115.134,69.208 L115.134,52.218 L115.134,52.218 Z M112.045,52.218 L113.718,52.218 L113.718,69.208 L112.045,69.208 L112.045,52.218 L112.045,52.218 Z M108.956,52.218 L110.629,52.218 L110.629,69.208 L108.956,69.208 L108.956,52.218 L108.956,52.218 Z M105.931,52.218 L107.539,52.218 L107.539,69.208 L105.931,69.208 L105.931,52.218 L105.931,52.218 Z M104.232,50.519 L124.62,50.519 L124.62,70.907 L104.232,70.907 L104.232,50.519 L104.232,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M121.312,28.695 L122.921,28.695 L122.921,45.684 L121.312,45.684 L121.312,28.695 L121.312,28.695 Z M118.223,28.695 L119.897,28.695 L119.897,45.684 L118.223,45.684 L118.223,28.695 L118.223,28.695 Z M115.134,28.695 L116.808,28.695 L116.808,45.684 L115.134,45.684 L115.134,28.695 L115.134,28.695 Z M112.045,28.695 L113.718,28.695 L113.718,45.684 L112.045,45.684 L112.045,28.695 L112.045,28.695 Z M108.956,28.695 L110.629,28.695 L110.629,45.684 L108.956,45.684 L108.956,28.695 L108.956,28.695 Z M105.931,28.695 L107.539,28.695 L107.539,45.684 L105.931,45.684 L105.931,28.695 L105.931,28.695 Z M104.232,26.996 L124.62,26.996 L124.62,47.383 L104.232,47.383 L104.232,26.996 L104.232,26.996 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,52.218 L146.446,52.218 L146.446,69.208 L144.836,69.208 L144.836,52.218 L144.836,52.218 Z M141.747,52.218 L143.42,52.218 L143.42,69.208 L141.747,69.208 L141.747,52.218 L141.747,52.218 Z M138.658,52.218 L140.331,52.218 L140.331,69.208 L138.658,69.208 L138.658,52.218 L138.658,52.218 Z M135.568,52.218 L137.241,52.218 L137.241,69.208 L135.568,69.208 L135.568,52.218 L135.568,52.218 Z M132.48,52.218 L134.153,52.218 L134.153,69.208 L132.48,69.208 L132.48,52.218 L132.48,52.218 Z M129.455,52.218 L131.064,52.218 L131.064,69.208 L129.455,69.208 L129.455,52.218 L129.455,52.218 Z M127.756,50.519 L148.144,50.519 L148.144,70.907 L127.756,70.907 L127.756,50.519 L127.756,50.519 Z" id="Shape" fill="#26C2EE"/>
<path d="M144.836,28.695 L146.446,28.695 L146.446,45.684 L144.836,45.684 L144.836,28.695 L144.836,28.695 Z M141.747,28.695 L143.42,28.695 L143.42,45.684 L141.747,45.684 L141.747,28.695 L141.747,28.695 Z M138.658,28.695 L140.331,28.695 L140.331,45.684 L138.658,45.684 L138.658,28.695 L138.658,28.695 Z M135.568,28.695 L137.241,28.695 L137.241,45.684 L135.568,45.684 L135.568,28.695 L135.568,28.695 Z M132.48,28.695 L134.153,28.695 L134.153,45.684 L132.48,45.684 L132.48,28.695 L132.48,28.695 Z M129.455,28.695 L131.064,28.695 L131.064,45.684 L129.455,45.684 L129.455,28.695 L129.455,28.695 Z M127.756,26.996 L148.144,26.996 L148.144,47.383 L127.756,47.383 L127.756,26.996 L127.756,26.996 Z" id="Shape" fill="#00ACD3"/>
<path d="M144.836,5.171 L146.446,5.171 L146.446,22.161 L144.836,22.161 L144.836,5.171 L144.836,5.171 Z M141.747,5.171 L143.42,5.171 L143.42,22.161 L141.747,22.161 L141.747,5.171 L141.747,5.171 Z M138.658,5.171 L140.331,5.171 L140.331,22.161 L138.658,22.161 L138.658,5.171 L138.658,5.171 Z M135.568,5.171 L137.241,5.171 L137.241,22.161 L135.568,22.161 L135.568,5.171 L135.568,5.171 Z M132.48,5.171 L134.153,5.171 L134.153,22.161 L132.48,22.161 L132.48,5.171 L132.48,5.171 Z M129.455,5.171 L131.064,5.171 L131.064,22.161 L129.455,22.161 L129.455,5.171 L129.455,5.171 Z M127.756,3.473 L148.144,3.473 L148.144,23.86 L127.756,23.86 L127.756,3.473 L127.756,3.473 Z" id="Shape" fill="#26C2EE"/>
<path d="M168.359,52.218 L169.968,52.218 L169.968,69.208 L168.359,69.208 L168.359,52.218 L168.359,52.218 Z M165.271,52.218 L166.943,52.218 L166.943,69.208 L165.271,69.208 L165.271,52.218 L165.271,52.218 Z M162.18,52.218 L163.853,52.218 L163.853,69.208 L162.18,69.208 L162.18,52.218 L162.18,52.218 Z M159.092,52.218 L160.765,52.218 L160.765,69.208 L159.092,69.208 L159.092,52.218 L159.092,52.218 Z M156.002,52.218 L157.675,52.218 L157.675,69.208 L156.002,69.208 L156.002,52.218 L156.002,52.218 Z M152.977,52.218 L154.587,52.218 L154.587,69.208 L152.977,69.208 L152.977,52.218 L152.977,52.218 Z M151.279,50.519 L171.667,50.519 L171.667,70.907 L151.279,70.907 L151.279,50.519 L151.279,50.519 Z" id="Shape" fill="#00ACD3"/>
<path d="M99.821,103.961 C102.926,103.961 105.445,106.481 105.445,109.586 C105.445,112.691 102.926,115.209 99.821,115.209 C96.714,115.209 94.196,112.691 94.196,109.586 C94.196,106.481 96.714,103.961 99.821,103.961" id="Shape" fill="#D5EEF2"/>
<path d="M99.821,105.557 C100.335,105.557 100.826,105.654 101.279,105.829 C100.788,106.113 100.456,106.645 100.456,107.253 C100.456,108.161 101.192,108.896 102.1,108.896 C102.722,108.896 103.262,108.55 103.542,108.041 C103.739,108.516 103.848,109.038 103.848,109.586 C103.848,111.81 102.045,113.614 99.821,113.614 C97.596,113.614 95.792,111.81 95.792,109.586 C95.792,107.36 97.596,105.557 99.821,105.557" id="Shape" fill="#3A4E55"/>
<path d="M0.337,92.306 L123.538,92.306 L138.776,92.306 L261.974,92.306 C256.277,90.861 243.949,88.909 245.982,81.443 C235.624,93.429 210.642,89.853 204.338,83.941 C197.317,94.125 156.445,90.254 153.595,82.321 C144.793,92.65 117.52,92.65 108.717,82.321 C105.865,90.254 64.995,94.125 57.973,83.941 C51.668,89.853 26.689,93.429 16.33,81.443 C18.363,88.909 6.035,90.861 0.337,92.306" id="Shape" fill="#3A4E55"/>
<path d="M114.771,144.492 C100.842,137.882 93.197,128.897 88.943,119.087 C83.769,120.565 77.55,121.508 70.323,121.914 C67.601,122.067 64.738,122.145 61.732,122.145 C58.268,122.145 54.617,122.043 50.785,121.839 C63.558,134.605 79.272,144.434 108.368,144.613 C110.516,144.613 112.649,144.571 114.771,144.492" id="Shape" fill="#C0DBE1"/>
<path d="M94.117,128.138 C92.19,125.522 90.32,122.235 88.946,119.086 C83.772,120.563 77.551,121.508 70.323,121.913 C75.288,124.609 82.388,127.105 94.117,128.138" id="Shape" fill="#D5EEF2"/>
</g>
<g id="Group" transform="translate(0.000000, 80.000000)" fill="#394E54" sketch:type="MSShapeGroup">
<path d="M287.386,12.311 L152.059,12.311 L135.323,12.311 L0,12.311 C6.257,10.724 19.798,8.58 17.565,0.378 C28.944,13.545 56.383,9.617 63.309,3.123 C71.021,14.308 115.915,10.056 119.046,1.343 C128.712,12.689 158.67,12.689 168.339,1.343 C171.471,10.056 216.365,14.308 224.077,3.123 C231.003,9.617 258.44,13.545 269.82,0.378 C267.586,8.58 281.128,10.724 287.386,12.311" id="Shape"/>
<path d="M831.425,12.311 L696.098,12.311 L679.362,12.311 L544.039,12.311 C550.296,10.724 563.837,8.58 561.604,0.378 C572.983,13.545 600.422,9.617 607.348,3.123 C615.06,14.308 659.954,10.056 663.085,1.343 C672.751,12.689 702.709,12.689 712.378,1.343 C715.51,10.056 760.404,14.308 768.116,3.123 C775.042,9.617 802.479,13.545 813.859,0.378 C811.625,8.58 825.167,10.724 831.425,12.311" id="Shape"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pepiniere/docker/6.outils-administration/images/harbor-1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
Pepiniere/docker/6.outils-administration/images/logo-harbor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save