Outils pour utilisateurs

Outils du site


sysadmin:docker:start

Ceci est une ancienne révision du document !


docker

Docker permet la création d'un environnement d’exécution isolé (appelé conteneur ou container) pour une application, un programme, une commande. Le conteneur, regroupe ou empaquette l'application et ses dépendances ainsi elle pourra être exécutée sur n'importe quel serveur Linux. Cette méthode étend la flexibilité, la portabilité de l'application.

Notions

Docker jeune mais s'appuie sur des briques logicielles pérennes et des mécanismes internes au noyau Linux (LXC, les cgroups et namespaces). C'est un outil de haut niveau qui simplifiant l'utilisation Il permet d'isoler des applications sans avoir à recréer une VM complète.

Par défaut, le container est une bulle fermée, la commande expose permet aux conteneur mapper un port du conteneur sur un port du host (publier) pour que le conteneur soit visible sur le réseau.

conteneur avec appli, il tourne sur la machine, je peux le déposer sur un serveur

Isoler des processus, par dessus le SE. pousser des container sur des hotes d'une ferme de serveur

Créer des images et instancier des conteneurs

On ne peut pas utiliser directement l'image iso d'une cd avec docker. docker n'est pas une vm. Les images sont des images de système de fichiers

avoir une image mise a dispo par docker (registry)



Un conteneur est une instance d'une image.

gérer les images

Rechercher une image sur la registry:

docker search mysql

A propos de la nomenclature, les noms en 2 parties user/image

Pour récupèrer une image avec argument pull

$ docker pull busybox

Lister les images disponibles localement:

docker images

Supprimer une image stockée localement:

sudo docker rmi mon-image

Instanciation

#lister les containers existant

$ docker ps

# Instancier une image (créer un conteneur)

docker run -t -i --env="" --name=busybox busybox 'echo hello world'

une instance (container est créée)

# liste tous les conteneurs même si les taches sont terminées

docker ps -a

# Supprimer l'instance (le conteur)

docker rm busybox 

ou busybox est le container ID. conteneur enveloppe, environnement pour exécuter un programme.

docker utilise des systèmes de fichiers

J'ai fait une image, j'ai fait une instance, je les modifiée, et je fais une nouvelle image qui intègre ces modifications avec la commande docker commit

si je veux la partager docker push, pousse l'image sur la registry pour qu'elle soit disponible pour tous.

docker et granularité

Un gros conteneur application wordpress peut cotnenir beaucoup de composants: base de données serveur web)

La problématique de la data, elle évolue dans le conteneur. Le l'application externaliser la data: utilisation d'un conteneur de type data: ne portera pas de process

bien découper, maîtriser la granularité, maîtriser les flux et les Le Dockerfile donne l’enchaînement des commandes permettant de reconstruire le conteneur

documentation de référence: https://docs.docker.com/reference/builder/

Exemple

#on decide de partir de la dernière version Ubuntu
FROM ubuntu:latest
RUN apt-get install -y memcached

#expose le service aux autres conteneur
EXPOSE 11211
CMD ["/usr/bin/memcached"]

sur le site officiel, concept et vocabulaire de base dans la section référence, la syntaxe du docker file est détaillée: https://docs.docker.com/reference/builder/

Creer l'image sudo docker build -tag toto/monimage

relations de dépendance

Variables d'environnement pour passer plein d'infos dans le containers. On les définies lors de l'instanciation du container avec docker run et l'option -e ou --env

Remarque: sur le site la registry, on voit les image et les docker file qui permettent de construire l'image. Tres bonne source d'inspiration.

lorsque j'instancie un contaienr, je precise qu'il a un lien avec un autre conteneur: sudo docker run –name –link=database_server -p 4000:8000 -d cree un environnement dans blog serveur avec les infos exportées par le container link

créer un script qui tient compte

Références

sysadmin/docker/start.1606494824.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)