Allez aujourd'hui un peu de docker, reprenons depuis le début! On va largement s'aider du tutoriel fourni par la doc officiel Docker.
Le but du post n'est pas forcement de paraphraser mais d'en extraire les lignes directrices, globalement c'est un peu comme si tiens si je fais ça, qu'est ce que ça fait.
Bien passons sur l'installation selon votre plateforme, moi je travaille sous Ubuntu donc
1 2 | $ sudo apt-get update $ sudo apt-get install docker-ce |
ou suivez la partie dédiée.
Le plus important est de comprendre l'utilisation d'un coté des commandes de base et de l'autre du fichier de configuration et de sa hiérarchie d’héritage.
Le fichier Dockerfile comporte un ensemble de mot clef permettant la définition d'une image instanciable dans lequel sera exécuté le code cible/produit. Les plus important:
- FROM Défini l'image initiale depuis laquelle notre image sera creer
- WORKDIR Défini l’arborescence de travail interne au conteneur
- ADD Permet de réaliser des copies depuis votre environnement de développement vers celui du conteneur
- RUN Permet de définir des actions précédant l’exécution de l'applicatif permettant d'initialiser le conteneur avec des dépendances éventuellement manquantes
- EXPOSE Permet la redirection de port comme on pourrait le faire pour une VM et ainsi accéder au contenu via se port
- ENV NAME Son petit nom... ^^
- CMD Défini comment on va démarrer notre application
Pour exemple, autant ne pas aller tres loin: Dockerfile
Une fois le fichier image docker creer il faut l’officialiser via un build. A noter que ce build permet de configurer ce que seront les instances de cette image, on peut donc y définir via la commande de build quelques particularités telles que la limite mémoire utilisable ou l'utilisation CPU
1 | $ sudo docker build -t nom_image_docker $DockerFileDir |
Et la normalement votre image est prete a etre instancié attention donc aux dépendances indirect réalisé (comme le processus de copy ADD qui impose la présence des fichiers sources)
Il ne reste plus qu'a lancer notre image:
Forcement quelques paramètres bien senti pourront vous permettre d'y voir plus clair en utilisant un nom pour votre container avec --name nom_cont et en exposant par exemple dans le cas de l'exemple docker cité plus haut un port de communication avec l'option -p 8080:80 (portExterne:portInterne)
Et grace a son petit nom vous allez pouvoir utiliser votre conteneur et son contenu comme un service
Voila les bases essentielles a docker.
1 | $ docker run nom_image_docker
|
Forcement quelques paramètres bien senti pourront vous permettre d'y voir plus clair en utilisant un nom pour votre container avec --name nom_cont et en exposant par exemple dans le cas de l'exemple docker cité plus haut un port de communication avec l'option -p 8080:80 (portExterne:portInterne)
1 | $ docker run nom_image_docker -p 80:7070 --name container_name
|
Et grace a son petit nom vous allez pouvoir utiliser votre conteneur et son contenu comme un service
1 2 | $ docker stop container_name $ docker restart container_name |
Voila les bases essentielles a docker.
Son intérêt est clairement de fournir un environnement spécifique et maîtrisé pour nos applications, de faciliter la reconfiguration et fiabiliser la mise en prod.
Au delà de cela, on y trouvera aussi un intérêt pour se substituer a l'utilisation de machines virtuelles qui elles vont nécessité un environnement plus lourd et complet. Par contre, si il est vrai que pour celui qui sait bien gérer des VM et leur restauration, docker présentera peu d’intérêt (a priori), il ne faut pourtant pas sous-estimer sa capacité a devenir un livrable en soit même (comme une VM pourrait l’être) composable a volonté, chose plus difficile a réaliser avec des VM qui vont consommer beaucoup plus de ressources.
Ainsi docker, en se plaçant entre l'OS et la virtualisation fourni un outils puissant d'isolation et de composition de services indépendant permettant de penser des architectures logicielles et systèmes nouvelles, dont l’évolution et la maintenance sera plus simple, rapide et fiable.
La prochaine fois on s’intéressera aux propriétés réseaux
Aucun commentaire:
Enregistrer un commentaire