Installer Docker et déployer des applications : le guide

Docker est un système de virtualisation au niveau du système d’exploitation. C’est une technologie très importante en ce moment. Il est donc important que l’architecte du SI la maîtrise. Cet article fait un point sur Docker et les containers.

 

guide installation docker

 

 

Installation avec le repository

Voici la procédure tirée de ce site.

Lancez une fenêtre xterm. Si celle-ci vous semble trop petite, suivez ces instructions pour augmenter la taille de la fenêtre xterm.

 

Installation du repo

Mettre à jour l’index des packages :

sudo apt-get update

Installer les bons packages pour permettre à apt d'installer le repo :

sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common

Ajouter la clé PGP de Docker :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 

Vérifier que l’on a bien l’empreinte :


9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88 

En tapant :

sudo apt-key fingerprint 0EBFCD88 

Utiliser un repo stable :

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

En cas d’erreur (j’ai mis x86_64 à la place de amd64), éditer /etc/apt/sources.list et enlever la ligne contenant l’erreur.

 

Installer Docker CE

Tapez :

sudo apt-get update
sudo apt-get install docker-ce

 

Vérifier que cela marche

Lancer :

sudo docker run --rm hello-world

Le –rm va automatiquement récupérer l’espace disque après la commande.

 

Pour désinstaller

sudo apt-get purge docker-ce
sudo rm -rf /var/lib/docker

 

Remarque : les fichiers de docker sont dans /var/lib/docker.

 

Déployer des applications

Nous allons commencer par récupérer une image de MySQL.

sudo docker mysql

 

Pour spécifier une version on écrit mysql:x.y.z

 

Utiliser docker sans sudo

Il faut ajouter le user au groupe docker.

sudo groupadd docker
sudo usermod -aG docker $USER
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "/home/$USER/.docker" -R

 

Dockerfile

Un fichier Dockerfile spécifie l’environnement du conteneur. Par exemple, l’accès au réseau, aux disques, les ports. L’environnement est isolé du reste du système. Il faut donc, par exemple, configurer et mapper les ports vers l’extérieur.

L’avantage c’est que chaque fois que vous exécuterez l’image l’environnement et les ressources seront les mêmes.

 

Builder un dockerfile

Vous pouvez suivre ce tutoriel pour builder un Dockerfile.

En gros, on crée un Dockerfile dans un répertoire, et puis le code source.

Pour builder on tape :

docker build -t friendlyhello .

L’instructiondocker images liste les images.

Pour lancer l’application :

docker run -p 4000:80 friendlyhello

On ajoute -d après run pour le lancer en background.

Ouvrez un navigateur web et tapez l’URL http://localhost:4000 pour voir le résultat.

 

Publier l’image

Créez un compte sur https://cloud.docker.com/.

Remarque : une registry est une collection de repositories. Un repo est une collection d’images.

Puis :

docker login

 

Tagger l’image

Tagger la version :

docker tag image username/repository:tag

Dans notre cas :

docker tag friendlyhello mli123/myfirstrepo:start1

 

Publier l’image

docker push mli123/myfirstrepo:start1

L’image est publiée sur le repository? On peut la voir sur https://hub.docker.com/

Après cela on peut lancer l’application sur n’importe quelle machine.

docker run -p 4000:80 username/repository:tag

voir https://dzone.com/refcardz/getting-started-with-docker-1

 

Commandes utiles

Voici quelques commandes utiles.

docker build -t friendlyhello .  # Create image using this directory's Dockerfile
docker run -p 4000:80 friendlyhello  # Run "friendlyname" mapping port 4000 to 80
docker run -d -p 4000:80 friendlyhello         # Same thing, but in detached mode
docker container ls                                # List all running containers
docker container ls -a             # List all containers, even those not running
docker container stop <hash>           # Gracefully stop the specified container
docker container kill <hash>         # Force shutdown of the specified container
docker container rm <hash>        # Remove specified container from this machine
docker container rm $(docker container ls -a -q)         # Remove all containers
docker image ls -a                             # List all images on this machine
docker image rm <image id>            # Remove specified image from this machine
docker image rm $(docker image ls -a -q)   # Remove all images from this machine
docker login             # Log in this CLI session using your Docker credentials
docker tag <image> username/repository:tag  # Tag <image> for upload to registry
docker push username/repository:tag            # Upload tagged image to registry
docker run username/repository:tag                   # Run image from a registry

 

Et ensuite ?

Nous découvrirons la suite dans un autre article. Nous apprendrons notamment ce qu’est un swarm.

 

Ressources :

  • https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository
  • https://docs.docker.com/get-started/#conclusion
  • https://www.docker.com/what-docker
  • https://www.docker.com/what-container
  • https://www.wanadev.fr/24-tuto-docker-demarrer-docker-partie-2/
  • http://blog.thoward37.me/articles/where-are-docker-images-stored/

Voir aussi ce livre.

 

Illustration : Kamusta23

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *