Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:docker [2020/10/26 21:50] – compléments docker francoisa | technique:docker [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Virtualisation avec Docker ====== | + | **Cette page est obsolète. Veuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/ |
- | + | ||
- | Docker est un système de virtualisation proche du sysème hote (s'il est similaire). Il permet de partager des ressources et de moins solliciter le système. | + | |
- | + | ||
- | Quelques sources : | + | |
- | + | ||
- | | + | |
- | | + | |
- | * Un serveur web docker | + | |
- | * [[https:// | + | |
- | | + | |
- | + | ||
- | ===== Installation ===== | + | |
- | + | ||
- | Voir la méthode recommandée : [[https:// | + | |
- | + | ||
- | Ou depuis les dépots d' | + | |
- | < | + | |
- | + | ||
- | sudo apt install docker.io | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Mettre l' | + | |
- | + | ||
- | < | + | |
- | sudo addgroup monlogin docker | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Principe de fonctionnement ===== | + | |
- | + | ||
- | On peut soit récupérer une image docker existante depuis un dépot ([[https:// | + | |
- | + | ||
- | Il faut donc distinguer : | + | |
- | + | ||
- | | + | |
- | * conteneur docker : une ou plusieurs instanciations de l' | + | |
- | + | ||
- | Voir la version de docker : '' | + | |
- | + | ||
- | Récupérer une image : '' | + | |
- | + | ||
- | Voir les images récupérées : '' | + | |
- | + | ||
- | Voir les images disponibles : '' | + | |
- | + | ||
- | Télécharger une image : '' | + | |
- | + | ||
- | Effacer une image locale : '' | + | |
- | + | ||
- | Chaque image peut être instanciée plusieurs fois pour avoir plusieurs conteneurs différentes, | + | |
- | + | ||
- | Mettre à jour une image : '' | + | |
- | + | ||
- | ===== Lancement d'un conteneur ===== | + | |
- | + | ||
- | Création d'un conteneur nommé : '' | + | |
- | + | ||
- | Exemple : '' | + | |
- | + | ||
- | Voir les instances en cours avec '' | + | |
- | + | ||
- | Détruire un conteneur : '' | + | |
- | + | ||
- | Lancer un conteneur : '' | + | |
- | + | ||
- | Arrêter un conteneur : '' | + | |
- | + | ||
- | Voir les conteneurs actifs : '' | + | |
- | + | ||
- | Voir les conteneurs actifs et inactifs : '' | + | |
- | + | ||
- | Chaque image docker possède plusieurs tags, par défaut " | + | |
- | + | ||
- | ===== Quelques commandes utiles ===== | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | ===== Besoin d'aide ? ===== | + | |
- | < | + | |
- | + | ||
- | + | ||
- | docker info | + | |
- | docker -h | + | |
- | + | ||
- | docker container -h # manage les container | + | |
- | + | ||
- | docker image -h # manage les images | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Idem pour network, volumes, service, system…. | + | |
- | + | ||
- | Publier une image | + | |
- | + | ||
- | < | + | |
- | docker commit < | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | et on pourra donc relancer : | + | |
- | + | ||
- | < | + | |
- | docker run -it NEW_IMAGENAME | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Dockerfile ===== | + | |
- | + | ||
- | Dans un dossier " | + | |
- | + | ||
- | < | + | |
- | FROM nginx | + | |
- | COPY index.html / | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Dans le dossier mondocker, lancer le docker avec : | + | |
- | + | ||
- | < | + | |
- | docker build -t mondocker . | + | |
- | Puis | + | |
- | docker run -p 8888:80 mondocker: | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Et pointer vers [[http:// | + | |
- | + | ||
- | ===== Instructions Dockerfile ===== | + | |
- | + | ||
- | * **FROM** | + | |
- | * **LABEL** | + | |
- | * **ARG** | + | |
- | * **ENV** | + | |
- | * **RUN** | + | |
- | RUN va créer une couche en cache qui sera réutilisée dans le cas de modification ultérieure du Dockerfile. | + | |
- | * **COPY** | + | |
- | * **ADD** | + | |
- | * **ENTRYPOINT** | + | |
- | * **CMD** | + | |
- | ENTRYPOINT , (on peut aussi l' | + | |
- | ENTRYPOINT , alors les instructions | + | |
- | CMD et | + | |
- | ENTRYPOINT doivent être spécifiées au format de tableau JSON. | + | |
- | * **WORKDIR** | + | |
- | CMD et/ou | + | |
- | ENTRYPOINT et ça sera aussi le dossier courant lors du démarrage du conteneur. | + | |
- | * **EXPOSE** | + | |
- | * **VOLUMES** | + | |
- | * **USER** | + | |
- | RUN , | + | |
- | CMD ou | + | |
- | ENTRYPOINT (par défaut c'est l' | + | |
- | + | ||
- | ===== Les volumes ===== | + | |
- | + | ||
- | Ce sont des dossiers accessibles en dehors de docker et donc mutualisables. | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | Ou sur une parition non montée : | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | ===== Network ===== | + | |
- | + | ||
- | Pour créer des réseaux entre plusieurs conteneurs de types possibles : | + | |
- | + | ||
- | * **bridge** | + | |
- | * **host** | + | |
- | * **none** | + | |
- | * **overlay** | + | |
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | Docker créer une interface pour chaque réseau créé (ip a). | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | ====== Docker-compose ====== | + | |
- | + | ||
- | Permet de composer plusieurs docker ensemble, une stack de conteneurs, à partir d'un fichier .yml | + | |
- | + | ||
- | Il est nécessaire d' | + | |
- | + |