Container-Docker

1. Conteneur

Évolution de la virtualisation

Matériaux

Un peu histoire. Au début, quand on a besoin des services informatique, on achète des matériaux comme pour CPU, Mémoire RAM etc.

Vue que les grandes Entreprise comme Amazon, il doit fonctionner parfaitement même pendant la période forte charge(Noël).

Virtualisation

VM

L’isolation avec le système hôte est donc totale.

Avantage:installer OS différentes, isolé du système hôte.

Inconvénients:prends du temps à démarrer, réserve des resources RAM/CPU

Conteneur

Un processus ou l’ensemble du processus isolés du reste du système.

Caractère: ne virtualise pas les resources, il ne crée qu’un isolation des processus. Donc il partage des resources avec son hôte.

Avantages:

  1. Ne réserve pas les resources-> louer les resources surplus en moyen cloud.
  2. Démarrez rapidement
  3. Plus d’autonomie à dev: réduire la diff entre production, dev, intégration.
  4. Les conteneurs permettent de réduire les coûts, d'augmenter la densité de l'infrastructure,
  5. CI, le cycle de déploiement.BlaBlaCar utilise des conteneurs pour créer et isoler rapidement des tests/builds d'application.
  6. MicroService: ils sont souvent utilisés en production pour ajouter des ressources disponibles et ainsi répondre à des besoins de mise à l'échelle, ou de scalabilité.

2. Docker

2.1 Création, année, fondateur

Fondateur, Solomon Hykes, né à New-york, d'un père américain et d'une mère franco-canadienne. Sa famille s’est installer en France, alors qu'il avait quatre ans.

En 2008, il crée dotCloud à Montrouge pour PaaS.

dotCloud s’est implante dans la Silicon Valley en 2011, début 2013, open source.

caractère:Docker, un conteneur ne doit faire tourner qu'un seul processus.

dans le cas d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons créer 3 conteneurs différents.

2.2 应用场景

1.Déployer le projet,

2.une équipe de 10 personnes peuvent avoir le OS différents.

3.CI

Cela permet à la CI/CD de créer rapidement des espaces isolés pour faire tourner vos tests.

goal:vous n'aurez plus de problème de différence d'environnement, et votre code marchera partout.

Comment faire pour avoir un environnement unifié et fonctionnel chez l'ensemble des développeurs

2.3 怎么储存?

Docker Hub:la registry officielle de Docker
Une registry est un logiciel qui permet de partager des images à d'autres personnes. C’est un composant majeur dans l’écosystème Docker, car il permet :

  • à des développeurs de distribuer des images prêtes à l’emploi et de les versionner avec un système de tags ;
  • à des outils d’intégration en continu de jouer une suite de tests, sans avoir besoin d’autre chose que de Docker ;
  • à des systèmes automatisés de déployer ces applications sur vos environnement de développement et de production.

需要什么matériel?

2.4. CMD

docker run image
Daemon docker va chercher cette image en local, dans le cas contraire, il va le récupérer sur la registry Docker officielle.
Docker run hello-world
-d: Sans -d, docker démarre le conteneur, exécute, et puis, il a fini par s’arrêter.
Avec -d, le conteneur reste allumé jusqu’à l’arrêt du service qu’il contient.
-p: 8080:80, trafic du port 8080 et puis le port 80 du conteneur.

docker exec -ti id-conteneur bash
Entre dans le conteneur, pour pourvoir y effectuer des actions.
docker stop id_conteneur
Arrêter le conteneur lancé avec l’option -d
docker rm id_conteneur
Celle-ci va détruire le conteneur et son contenu.
docker pull image
Récupérer l’image, et le stocker en local sans lancer le conteneur.
docker ps
Info l’états du conteneurs actifs.
docker images -a
voir l'ensemble des images présentes en local
docker system prune
faire le ménage

docker build
Docker va créer un conteneur pour chaque instruction, et le résultat sera sauvegardé dans une layer. Le résultat final étant un ensemble de layers qui construisent une image Docker complète.
Si une layer ne bouge pas entre deux builds, Docker ne la reconstruira pas. Seules les layers situées après une layer qui se reconstruit seront elles aussi reconstruites.
Exemple:
docker build -t ocr-docker-build .
-t: donner un nom à image.
Le . est le répertoire où se trouve le Dockerfile ; dans ce cas, à la racine de notre projet.

2.5 Lancement d'un docker

docker build -t nom-docker-build .
docker run -d -p 2368:2368 nom-docker-build

2.6 ignore fichier with .dockerignore

Il permet de ne pas copier certains fichiers ou dossiers dans le conteneur lors de l'exécution de l'instruction ADD.

********Sous Chaptire Dockerfile, Créer votre propre image***************

Nom du fichier: Dockerfile

Sans extension

Layer:

Chaque instruction que nous allons donner dans notre Dockerfile va créer une nouvelle layer correspondant à chaque étape de la construction de l'image.

Un exemple:
FROM debian:9

Définir une image que vous voulez travailler au-dessus comme base.
FROM n'est utilisable qu'une seule fois dans Dockerfile.
RUN apt-get update -yq \ && apt-get install curl gnupg -yq \ && curl -sL https://deb.nodesource.com/setup_10.x | bash \ && apt-get install nodejs -yq \ && apt-get clean -y
RUN exécuter une commande dans le conteneur.
ADD . /app/
ADD copier ou télécharger des fichiers dans l'image.Dans ce cas, il copie les sources de de l'app locale dans le dossier /app/ de l'image.
. signifie le repertoire courant.
les code sources sont prêts.

WORKDIR /app

WORKDIR permet de modifier le répertoire courant. elle est équivalente à une comme cd en ligne de commande.

RUN npm install
RUN permet d'installer le package du projet Node.js
les dépendances sont prêts

EXPOSE 2368
EXPOSE indique le port sur lequel votre application écoute.

VOLUME /app/logs
VOLUMEindique quel répertoire vous voulez partager avec votre host.

CMD npm run start
CDMdoit toujours être présent, placer en dernière ligne, permet au conteneur de savoir quelle commande il doit exécuter lors de son démarrage.

********Sous Chaptire Docker-compose, Unifier conteneur*********

Rérérence:
Répo GitHub ghost-cms

你可能感兴趣的:(Container-Docker)