Ceci est une ancienne révision du document !
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 :
export https_proxy=http://login:password@proxy.univ-tln.fr:3128/ && export http_proxy=$https_proxy
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).
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
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 :
docker-machine create --driver virtualbox default eval "$(docker-machine env default)" docker-machine ip default
Supprimer le proxy dans l’hôte:
unset http_proxy && unset https_proxy
Se connecter dans la VM et ajouter le proxy web pour permettre le téléchargement des images :
docker-machine -D ssh default sudo vi /var/lib/boot2docker/profile
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:
sudo /etc/init.d/docker restart exit docker search ubuntu docker pull debian docker run -it --name debian debian
Découverte de Docker
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
Ajouter simplement le fichier minimal suivant à la racine (Il indique l’image à utiliser et la commande).
- .gitlab-ci.yml
package: image: docker.lsis.univ-tln.fr:443/ebruno/maven:latest script: mvn package
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 :
docker login docker.lsis.univ-tln.fr:443 docker pull docker.lsis.univ-tln.fr:443/ebruno/maven:latest
Un simple test de maven :
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
Une compilation complète (ne marche pas en non root ou dans le groupe docker à cause du montage NFS) :
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
Le répertoire courant est monté dans le conteneur dans la VM, ainsi que le ~/.m2
—- dataentry page —- type : TP enseignement_tags : D35 technologie_tags : Docker theme_tags : Composants