mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
4.4 KiB

  1. ---
  2. title: Howto Docker
  3. categories: docker
  4. ---
  5. Docker est une solution qui permet de créer, déployer et gérer en toute
  6. simplicité des conteneurs Linux.
  7. Elle combine plusieurs technologies pour rendre l'utilisation
  8. des conteneurs accessible à tous.
  9. # Docker Engine
  10. ## Installation
  11. Les procédures d'installation suivantes sont destinées à Debian 8 (Jessie)
  12. ### Manuelle
  13. ~~~
  14. # echo "deb http://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
  15. # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  16. # apt update
  17. # apt install docker-engine
  18. # adduser <USER> docker
  19. ~~~
  20. ### Ansible
  21. Le rôle docker-host permet d'installer le docker-engine sur un hôte distant et
  22. de l'exposer à l'externe ou non.
  23. La documentation concernant l'utilisation du rôle est située dans son répertoire.
  24. #### TLS
  25. Lorsque le docker-engine est exposé, il est important de le sécuriser avec TLS.
  26. Au moment de l'installation, une version altérée de shellpki est copiée dans le
  27. répertoire docker/tls. Ensuite, les certificats et la clé sont créés pour le
  28. serveur. (`shellpki init`)
  29. Pour autoriser des hôtes à se connecter à l'engine, il faut leur créer une clé
  30. et un certificat.
  31. Pour ce faire, il suffit de lancer le script:
  32. ~~~
  33. /home/docker/tls$ ./shellpki create
  34. ~~~
  35. Les fichiers seront créés, par défaut, dans le répertoire
  36. `/home/docker/tls/files/$CN`
  37. ## Utilisation de base
  38. Une image Docker contient un OS avec un ou plusieurs services préconfigurés.
  39. Un conteneur quant à lui est une instance (créée à partir d'une image)
  40. en cours d'execution.
  41. ### Lister les conteneurs et les images:
  42. ~~~
  43. $ docker ps [options]
  44. ~~~
  45. Voici quelques options utiles pour la commande `ps`
  46. ~~~
  47. -a : Lister tous les conteneurs
  48. -l : Lister les conteneurs récentralise
  49. -q : Lister uniquement les ID des conteneurs
  50. ~~~
  51. ### Démarrer un conteneur
  52. ~~~
  53. $ docker run [options] IMAGE [commande]
  54. ~~~
  55. Options courantes:
  56. ~~~
  57. --name="nom" : Donner un nom au conteneur
  58. -p port_hôte:port_conteneur : Rendre un port accessible depuis l'hôte
  59. -d : Lancer le conteneur en mode 'détaché'
  60. -it : Lancer le conteneur en mode intéractif avec tty
  61. ~~~
  62. Pour plus d'options, consulter `$ man docker run`
  63. ### Éteindre ou tuer un conteneur
  64. ~~~
  65. $ docker stop|kill [options] CONTENEUR
  66. ~~~
  67. CONTENEUR correspond au nom ou à l'ID du conteneur.
  68. Lorsque le conteneur n'est plus en fonction, il existe toujours et peut être
  69. lister à l'aide de la commande `$ docker ps -a`
  70. ### Supprimer un conteneur ou une image
  71. ~~~
  72. $ docker rm [options] CONTENEUR
  73. ou
  74. $ docker rmi [options] IMAGE
  75. ~~~
  76. ### Exécuter des commandes au sein d'un conteneur en marche
  77. ~~~
  78. $ docker exec [options] CONTENEUR COMMANDE
  79. ~~~
  80. Options courante:
  81. ~~~
  82. -it : Lancer la commande de manière intéractive dans un TTY.
  83. ~~~
  84. ### Visionner les logs d'un conteneur
  85. ~~~
  86. $ docker logs [options] CONTENEUR
  87. ~~~
  88. Option:
  89. ~~~
  90. -f : Suivre les logs en direct
  91. ~~~
  92. ### Se connecter à un conteneur en marche
  93. S'il est nécessaire d'intéragir directement avec un process lancé dans un
  94. conteneur, il faut utiliser la commande `attach`.
  95. Dans le cas où l'on souhaite simplement visionner la sortie (logs) du conteneur,
  96. il faut utiliser `logs`.
  97. Pour lancer un terminal ou une commande supplémmentaire, utiliser `exec`.
  98. ~~~
  99. docker attach [options] CONTENEUR
  100. ~~~
  101. **ATTENTION!!!**
  102. Lorsque le conteneur est attaché, l'utilisation de *CTRL+C* termine le processus
  103. en cours. La commande *CTRL+P+Q* doit être utilisé ou l'on doit ajouter l'option
  104. `--sig-proxy=false` lors du lancement ou de l'attachement.
  105. ### Astuces
  106. Éteindre/Tuer/Supprimer tous les conteneurs:
  107. ~~~
  108. $ docker stop|kill|rm $(docker ps -aq)
  109. ~~~
  110. Supprimer toutes les images:
  111. ~~~
  112. $ docker rmi $(docker images -q)
  113. ~~~
  114. Lancer un terminal bash dans un conteneur en marche:
  115. ~~~
  116. $ docker exec -it CONTENEUR bash
  117. ~~~
  118. Démarrer un conteneur avec un terminal bash:
  119. ~~~
  120. $ docker run -it IMAGE bash
  121. ~~~
  122. ### Dépannage
  123. #### Problème de connectivité à l'intérieur des conteneurs
  124. Solution:
  125. Redémarrer le service docker
  126. #### Espace insuffisant lors d'un build
  127. Solutions:
  128. - Vérifier que le "build context" n'est pas trop grand.
  129. - Modifier la variable d'environnement DOCKER_TMPDIR .
  130. - Créer un fichier .dockerignore pour exclure des fichiers et répertoires
  131. du "build context"
  132. *Build context: Tout ce qui se trouve à la racine du Dockerfile.*