Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
enseignement:d35:tp:docker [2016/01/05 08:32] Emmanuel Brunoenseignement:d35:tp:docker [2018/11/09 10:23] Emmanuel Bruno
Ligne 1: Ligne 1:
-====== D35 - TP5 - Docker ====== 
-===== Installer docker et docker-machine ===== 
  
-Vous pouvez installer Docker sur votre machine personnelle en suivant : https://docs.docker.com/engine/installation/. 
- 
-Nous allons commencer par le mettre en place sur les machines des salles de TP (donc sans être root) cela fonctionne bien mais avec certaines limite (sur les volumes notamment). 
- 
-Penser à configurer le proxy dans l'hôte : 
-<cli> 
-export https_proxy=http://login:password@proxy.univ-tln.fr:3128/ && export http_proxy=$https_proxy  
-</cli> 
- 
-Télécharger et installer les binaires de docker engine (c'est le moteur mais nous n'utiliserons que le client sur l'hôte) et docker machine (le gestionnaire de VM). 
-<cli> 
-export PATH=~/bin:${PATH} 
-cd ~/bin 
-curl -L https://get.docker.com/builds/Linux/x86_64/docker-latest > docker && chmod +x docker 
-curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64 > docker-machine && chmod +x docker-machine 
-</cli> 
- 
-Supprimer le proxy dans l'hôte: 
-<cli> 
-unset http_proxy  && unset https_proxy 
-</cli> 
- 
-Créer une machine virtuelle en y installant docker engine, fixer les variables d'environnement qui vont permettre au client docker exécuter sur l'hôte d'utiliser le moteur installé dans la VM : 
-<cli> 
-docker-machine create --driver virtualbox default 
-eval "$(docker-machine env default)" 
-docker-machine ip default 
-</cli> 
- 
-Se connecter dans la VM et ajouter le proxy web pour permettre le téléchargement des images : 
-<cli> 
-docker-machine -D ssh default 
-sudo vi /var/lib/boot2docker/profile 
-</cli> 
- 
-ajouter dans le fichier : 
-   
-  export HTTP_PROXY=http://login:password@proxy.univ-tln.fr:3128 
-  export HTTPS_PROXY=http://login:password@proxy.univ-tln.fr:3128 
-  export NO_PROXY=localhost,127.0.0.0/8,docker.lsis.univ-tln.fr 
- 
-puis relancer le service docker dans boot2docker (la VM), quitter la VM et tester depuis l'hôte: 
-<cli> 
-sudo /etc/init.d/docker restart 
-exit 
-docker search ubuntu 
-docker pull debian 
-docker run -it --name debian debian 
-</cli> 
- 
-<note> 
-Supprimer le conteneur Debian, ainsi que l'image. Attention, la place est limitée dans la VM (cf. --engine-env et --virtualbox-disk-size à la création de la VM avec docker-machine). 
-</note> 
- 
-==== Découverte de Docker ==== 
-<note> 
-Suivre le tutoriel https://docs.docker.com/linux/ pour créer sa propre image. 
-</note> 
- 
-Il est possible de passer des variables d'environnement lors de la construction de l'image sans que celles-ci n'y soient stockées (c'est utilise pour le proxy par exemple) : ''--build-arg HTTP_PROXY=http://...'' 
- 
-Vous pouvez maintenant construire vos propres images, en personnalisant d'autres (java, maven, payara, mysql, ...). Pour orchestrer l'installation d'un environnement complet composé de plusieurs conteneur il faut étudier : https://docs.docker.com/compose/ 
- 
-==== Cas d'usage avec GitLab ==== 
-<note> 
-Après avoir eu un compte sur https://gitlab.lsis.univ-tln.fr/, créer un projet, y déposer le projet de base créé par l'archetype maven quickstart et mettre en place l'intégration continue en suivant les instructions suivantes.  
-</note> 
- 
-Ajouter simplement le fichier minimal suivant à la racine (Il indique l'image à utiliser et la commande). 
- 
-<file | .gitlab-ci.yml> 
-package: 
-  image:  docker.lsis.univ-tln.fr:443/ebruno/maven:latest 
-  script: mvn package 
-</file> 
- 
-Vérifier que la compilation et les tests passent, vérifier qu'une erreur est bien détecté. Par défaut, gitlab utilise des runner (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner) partagé qui ont été configurés pour utiliser docker, vous pouvez installer des runners spécifiques sur n'importe quelle machine pour vos projets.  
- 
-==== Utilisation d'un repository privé pour la compilation ==== 
-Se connecter au repository privé (il faut un compte) et installer l'image Maven dans la VM : 
-<cli> 
-docker login docker.lsis.univ-tln.fr:443 
-docker pull docker.lsis.univ-tln.fr:443/ebruno/maven:latest 
-</cli> 
- 
-Un simple test de maven : 
-<cli> 
-docker run -v `pwd`:/usr/src/app -v ~/.m2:/home/user/.m2 -u `id -u`:`id -g` docker.lsis.univ-tln.fr:443/ebruno/maven:latest mvn -Duser.home=/home/user -version 
-</cli> 
- 
-Une compilation complète (ne marche pas en non root ou dans le groupe docker à cause du montage NFS) : 
- 
-<cli> 
-mvn archetype:generate \ 
- -DarchetypeGroupId=org.apache.maven.archetypes \ 
- -DarchetypeArtifactId=maven-archetype-quickstart \ 
- -DarchetypeVersion=1.1 \ 
- -DgroupId=fr.univtln.login \ 
- -DartifactId=MyApp \ 
- -Dversion=1.0-SNAPSHOT 
- 
-cd MyApp 
- 
-docker run -v `pwd`:/usr/src/app -v ~/.m2:/home/user/.m2 -u `id -u`:`id -g` docker.lsis.univ-tln.fr:443/ebruno/maven:latest mvn -Duser.home=/home/user package 
-</cli> 
-Le répertoire courant est monté dans le conteneur dans la VM, ainsi que le ~/.m2 
- 
-{{tag>D35 TP Docker }} 
- 
----- dataentry page ---- 
-type                 : TP 
-enseignement_tags    : D35 
-technologie_tags     : Docker 
-theme_tags           : Composants 
-----  
 ---- struct data ---- ---- struct data ----
 +metadata.level       : 
 +metadata.Type        : TP
 +metadata.Nom         : 
 +metadata.Enseignements : D35
 +metadata.Promotions  : M2
 +metadata.Technologies : Docker
 +metadata.Thèmes     : devops
 +metadata.Description : 
 ---- ----