Vous êtes sur la page 1sur 8

-Docker est une plateforme open source permet :d�vlopement de code, �xecution de

code et deploiement du code


-permet de r�duire consid�rablement le d�lai entre l'�criture de code , son
ex�cution et mettre en production
-container docker offre la possibilit� de package et d'ex�cuter des applications
dans un environnement un peu isol� appel� container
-un container ce n'est ps un complete OS mais il contient juste les binary
(ex�cutables) et les librairies n�cessaire pour le fonctionemnt de l'application
-Son principal int�r�t est d�assembler les briques d�une application en conteneurs
pouvant �tre partag�s, sous forme d�images, au travers d�un registre (�docker
registry�) et de les ex�cuter quels que soient la plateforme et l�environnement.
Gr�ce � Docker, les applications deviennent portables et ex�cutables n�importe o�
-docker permet d'automatiser le deploiement d'application dans un conteneur et il
permet aussi de grantir que les conteneurs fonctionne de la meme fa�on qlq sois
l'env d'�xection
-docker permet d'�xecuter le code sur un container ind�pendament du syst�me
d'exploitation
-Virtualisation hypervisor permet de partager les ressources d'un hot avec des
virtual machine
-Docker permet d'isoler les processus et les deamons des applications dans le meme
OS c'est pourquoi il aura pas des conflits entre les applications
-Docker est bas� sur la technologie de linux container LXC et Cgroups utilis� par
le noyeau linux pour isoler les processus entre eux

les avantages du docker :


-facility :conteneur docker permet de supprimer un niveau de complexit� du
processus de d�veloppement et de d�ploiement, car les d�veloppeurs doivent
uniquement mettre en package une application et ses d�pendances
-rapidit� : Les conteneurs Docker partagent le noyau du syst�me d'exploitation h�te
, mais l'architecture de Docker prot�ge les conteneurs les uns des autres en
isolant leurs processus.
-interop�rabilit� :les �quipes de d�veloppement peuvent lier plusieurs conteneurs
ou services pour cr�er des piles d'applications multiniveaux
-probabilit� :docker fournit une m�thode normalis�e pour d�ployer des conteneurs
dans un nombre quelconque d'environnements de docker, qu'un environnement soit
situ� sur un poste de travail de d�veloppement, une infrastructure cloud ou un
service cloud public.

docker architecture
docker il a une architecture client serveur
docker deamon et client peut etre situ� sur le meme serveur ou s�par�
docker client et deamon communique via socket
-docker client : c'est un utilisateur qui lance des requets de �xecuter une
op�ration avec docker deamon(cr�er,suprimer,modifier,d�placer un conteneur docker)
il poss�de docker CLI qui permet d'effectuer un nombre de tache sur conteneur c'est
actions sont : docker pull , docker run ,docker build,docker push
-docker deamon :il est toujours �xecuter sur le syst�me qui contient un conteneur
il permet de g�rer les conteneurs et les images
image est utilis� pour cr�er un conteneur
-un conteneur : contient les binaires et les librairies requise pour le travail
d'une application
-registery : contient les images et conteneurs d�ja cr�er = pulic remote docker
regisetry :Docker Hub

les outils docker open source :


-docker compose : permet le lancement des applications multi-container
-docker swarm : permet la gestion des containers docker dans un cluster
-docker register : permet de g�rer les images docker locale
-libnetwork : outil d'orchestration network docker permet de g�rer la configuration
r�seau des conteneurs

installation docker
-dokcer fonction seulement on 64-bit linux pour verifier :
cat /etc/*release | grep -w NAME
-docker fonctionne sur kernel 3.10 ou plus
uname -r
il existe deux Edition du docker
docker community edition
docker entreprise edition
ce paquet est requise pour stockage device permet la communication entre docker et
le pr�ph�rique de stockage
#apt-get install device-mapper-persistent-data lvm2
installation docker stable repository
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
instalaltion docker
#apt-get install docker.io
v�rifier le bon fonctionnement de docker
#docker run -it ubuntu /bin/bash

s�quence de d�marrage de container docker


recherche l'image si il existe ==> si l'image n'existe pas en locale ==>
t�l�charger du docker hub => construction du syst�me de fichier
d�marrage du container
configuraton de networking

systemctl enable docker

les actions sur une image


build : g�n�rer une image automatique en �xecutant les instructions dans le
dockerfile
commit :
save,
cr�e une image docker :
en utilise pour la cr�ation d'une image portable docker un dockerfile qui est le
ficher de configuration pour la cr�ation d'une image dans ce ficher on trouve une
s�quence d'instruction :
RUN : lancement des commands
CMD : �xecution des commandes
EXPOSE : exposer un port
MAINTAINER :propri�taire de l'image

example dockerfile :
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
docker build --tag=<tag>

# Run app.py when the container launches


CMD ["python", "app.py"]
docker inspect [image]
explorer des informations sur l'image comment il est construit
FROM ubuntu:latest
MAINTAINER toubi
RUN apt-get update && apt-get install httpd -y
CMD //sbin/httpd && /bin/bash
EXPOSE 80

FROM ubuntu:latest
MAINTAINER toubi
LABEL version="" location="" type=""
RUN apt-get install httpd -y;apt-get install initscript -y
RUN adduser docker
RUN //sbin/httpd
USER docker
WORKDIR /var/www/html

#docker build -t [nom_img] [dockerfile]


construction de docker file pour cr�er l'image docker

docker commandes in dokcer client


#docker help afiche help des commandes docker
#dockerd stop arreter un conteneur docker d�ja d�marrer
#docker start d�marer un conteneur docker d�ja arret�
#docker version affiche version docker client et serveur
#docker version affiche version docker client et serveur
#docker info affiche des information sur docker
#docker search [image] chercher des images sur Docker Hub ou locale si il
existe
#docker run -t -i busybox demarer un container
#container ps permet de lister les container en cours d'�xecution
#container ps -a permet d'afficher tous les container
#docker images permet de lister les images local
#docker run -i -t busybox:latest permet de demarer un conteneur d'apr�s locale
#docker rm [name] suprimer un container

deployement apache-server in docker container


#docker search httpd cherhcer l'image apache-server
#docker pull httpd pour t�l�charger l'image apache
#docker images lister les images diponible pour
savoir si notre apache-server a bien t�l�charger
#docker run -d --name myswebserver httpd:latest d�marer notre conteneur bas� sur
l'image httpd
#docker ps lister les conteneurs en cours pour verifier
si notre conteneur a bien d�marer
#docker port mywebserver
#docker run -d --name mywebserver -p 6666:80 httpd:latest sp�cifier un num�ro de
port priv�/port public pour un conteneur
#docker exec -it [container] [commande] executer une coommande sur le container
en cours d'�xecution

container vs image
image est fig� il es en lecture seule alors que conteneur �xecute ou arrete des
instances de certain images
cr�er un image personalis�
docker port <container> = afiche mappage port
docker logs <container> = affiche les logs d'un container
docker inspect <container> = afficher tous les informations d'un container
docker top <container> = affiche les processus actifs dans le container
docker images == liste tous les images tl�charger
docker rm $(docker ps -a -q)

dockerfile contient tous les informations n�cessaire pour cr�ation d'une image
docker
FROM <image de base>
MAINTAINR <propri�taire_script>
RUN <>
CMD <>
PORT <>

Docker Networking :
d�marage d'un container docker implique :
-c�ation d'un bridge : docker0
-assign� une adresse ip priv� et mac assign� a ce bridge
-configuration de table de routage
container contient des applications ces applications n�cessiste l'acc�s au r�seau
(serveur,internet,utilisateurs) pour configurer docker networking afin de permettre
� l'application d'acc�der au r�seau il faut sp�cifier
-type de r�seau
-publier le port(g�n�ralement les conteneurs docker fnt sur des ports priv�s)
-configurer DNS Le mod�le de r�seau de conteneur
diff�rant type de docker container network
bridge :permet de connecter le conteneur � un r�seau LAN et avec d'autre container
-c'est la configuration par d�faut de type de DOCKER CONTAINER NETWORKING
host :enelever l'isolation entre le conteneur et le host
overlay: permet de connecter plusieurs docker host et leurs conteneurs entre eux
et active swarm
possible pour Docker EE et swarm activ� utolise VXLAN
macvlan :
-attriber des adresses MAC au container il apparait comme une machine physique
-permet la connexion a des vlans
none : container est isol� il n'est pas accebile par le r�seau

#docker network ls
#docker network inspect [type_network]
#docker network create --driver bridge app-network cr�er a CDN
#docker run -dit --name app1 --network app-network alpine ash
#docker container attach app1
#docker container stop app1 app2
#docker container rm app1 app2
#docker ntwork rm net-app
#docker network create --driver overlay app-overlay
#docker service create --network app-overlay --name app1 --replicas 6 nginx
#docker service ls
#docker service inspect app-overlay

publish port :
permet d'xposer le port du conteneur docker pour qu'il sois accessible de
l'exterieur c-a-d crer le mappage de port priv�/public
par d�faut les conteneurs sont connecter a un bridge network qui est connecter a
l'interface physique du Docker host ainsi accessible au r�seau LAN ou Internet
par d�faut les conteneurs ont outbound access network mais pas inbound access
network
il faut exposer les ports pour avoir inbound access network

#docker run -dit --name web-app -p 9090:80 nginx


#docker run -dit --name web-app -P nginx

configuration DNS in docker


configurer service DNS pour un conteneur
#docker container run -dit --name app --dns @dns centos /bin/bash

example installation de serveur LAMP sur des containers :


docker run -dit --name mydb mysql
docker arun -dit --name myphp --link mydb:myphp php
docker run -dit --link myphp:php -p 80:80 my-nginx-img

avec docker y'a plus de phrase il marche sur ma machine mais ne marche pas en phase
de deploiement
il approche d�velopement, test et mettre en production
r�duire le d�lai entre �criture, execution et mettre en production le code
permet de d�velopper sur des conteneurs ind�pendament du machine

installer docker compose


sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-
compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
verification installation :
docker-compose --version

probl�me de d�marrage docker :


#usermod -aG docker jenkins
ajouter l'utilisateur jenkins au groupe docker

cr�atio d'un conteneur docker :


docker file (docker build) ==>docker image docker run ==>rer un conteneur

�xecuter une commande � l'interieur d'un conteneur


#docker exec <container_id> <commande>
ouvrir une session bash dans le terminal
#docker exec -it <container_id> <$BASH>
sauvegarder les modification apport� � un containre dans une image
#docker commit -p <container_id> <image_id>
sauvegarder une image dans un fichier
#docker save <image_id> <file>
lire une image �partir d'un fichier'
#docker load -i <file>
suprimer un container
#docker rm <container_id>
suprimer une image
#docker rmi <image>
suprimer tous les conteneurs
#docker rm $(docker ps -a -q)
suprimer tous les images
#docker rmi $(docker images -q)
liste les r�seaux docker
#docker network ps
lister tous les volumes
#docker volume -l
avoir des informations sur un container
docker inspect <container_id>

Dcokerfile : contient un ensemble d'intesruction' permettant de construire une


image
#docker build -t <img_name>:tag <path_dockerfile>
syntaxe d'un fichier' dockerfile
FROM <image>:<tag> d�finir l'img' de d�part de cette image
RUN <cmd1, cmd2, .....> �xecuter une commande
WORKDIR <PATH> d�finir le r�pertoire de travail
docker compose

docker tag <nom>:latest


docker push
pour cr�er un conteneur jenkins � partir de l'image jenkins/jenkins
docker run \
-u root \
-dit \
-p 8080 \
--name jenkins
-v $HOME/jenkins_data:/var/jenkins_home \
jenkins/jenkins

pour cr�er nv terminal et acc�der au container cli


docker exec -it jenkins bash
acc�der au container logs
#docker logs jenkins -f

docker-machine
Docker Machine est un outil qui vous permet d'installer Docker Engine sur des h�tes
virtuels et de g�rer les h�tes � l'aide de docker-machine commandes. Vous pouvez
utiliser Machine pour cr�er des h�tes Docker sur votre ordinateur Mac ou Windows
local, sur le r�seau de votre entreprise, dans votre centre de donn�es ou sur des
fournisseurs de cloud tels que Azure, AWS ou Digital Ocean.
� l'aide de docker-machinecommandes, vous pouvez d�marrer, inspecter, arr�ter et
red�marrer un h�te g�r�, mettre � niveau le client et le d�mon Docker et configurer
un client Docker pour qu'il puisse communiquer avec votre h�te.

docker start -a -i <container_iddocker in>


docker build -t utilisatuer/repo_name:tag
un dockefile peut contenir un ENTRYPOINT qui permet de sp�cifier le type
d'�xeecutor � utiliser lors de l'�xecution dess instructions
ENTRYPOINT["/bin/bash"]
RUN apt-get update
cr�ation dockerfile pour

un conteneur est lanc� en �xecutant une image


une image est un package �xecutable contient tous ce qui n�cessaire pour
l'�xecution d'une application : code,librairie,binary,ficheir de
configuration,variable d'env et bibliioth�que etc
un conteneur est une instance d'�xecution d'image
un conteneur partage le nouyeur avec la machine
v�rification bon installation docker :
#docker --version
#docker version
#docker info
#docker run hellow-world
affichage des conteneurs et images
#docker container ls
#docker images ls
#docker service -l
#docker tag image utilisatuer/repository:tage
#docker push
#dockr login

Dans une application distribu�e, diff�rentes parties de l'application sont appel�es


�services�.
Par exemple,un site de partage vid�o, il inclut probablement un service de stockage
des donn�es d'application dans une base de donn�es, un service de transcodage vid�o
en arri�re-plan apr�s le t�l�chargement d'un utilisateur, un service pour le front-
end, etc.
docker-compose.yml permet de lancer des applications multi-services

example d'un fichier docker-compose.yml


version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:

1)t�l�charegr l'image du registre


�xecuter 5 instance (services / conteneur) nomm� web de cette image en limitant les
ressources 10% de CPU et 50 mb de RAM
en cas d'echec red�marer imm�diatement
mapper le port 4000 en 80 pour qu'il soit accessible de l'exterieur
par dokcer compose
#docker compose -f docker-compose.yaml up
ou bien par docker stack
#docker swarm init
#docker stack deploy -c docker-compose.yml <image>

docker stack ls # List stacks or apps


docker stack deploy -c <composefile> <appname> # Run the specified Compose file
docker service ls # List running services associated with an app
docker service ps <service> # List tasks associated with an app
docker inspect <task or container> # Inspect task or container
docker container ls -q # List container IDs
docker stack rm <appname> # Tear down an application
docker swarm leave --force # Take down a single node swarm from the manager
#docker service ls
docker compose permet de g�rer les conteneurs en utilisant le fichier docker-
compos.yml == lancer des applications multi-service
permet de g�rer un cluster de conteneurs Docker via Docker Swarm
par d�faut agent docker et clients connecte entre eux par les sockets pour changer
ce type de connexion en tcp dans le ficher /usr/systemctl/system/docker.service
/lib/systemd/system/docker.service
ExecStart = ***** -H tcp://0.0.0.0:4243
systemctl deamon-reload
systemctl restart docker

Vous aimerez peut-être aussi