** Docker ** est une technologie qui facilite la création, le déploiement et l'exécution d'applications à l'aide de conteneurs.
Docker est une technologie qui facilite la création, le déploiement et l'exécution d'applications à l'aide de conteneurs. Les conteneurs permettent aux développeurs de conditionner tous les composants dont ils ont besoin pour leur application et de les expédier plus tard sous forme de packages. Il vous permet également d'exécuter plus d'applications sur le même serveur.
Avec Docker, les applications exécutées sur des conteneurs sont isolées les unes des autres, offrant un niveau de sécurité supérieur. De plus, Docker garantit que chaque conteneur dispose de ses propres ressources, de sorte que l'application n'utilisera que les ressources allouées.
Avant de commencer ce guide, vous avez besoin des éléments suivants:
Connectez-vous au serveur à l'aide de la commande ssh.
$ ssh [email protected]
Mettez à jour le package Ubuntu.
$ sudo apt-get update
Installez la dernière version de Docker avec la commande suivante.
$ sudo apt-get install docker
Pour vérifier que Docker est correctement installé, exécutez la commande suivante:
$ sudo docker run hello-world
Si elle est effectuée correctement, la commande ci-dessus devrait permettre à l'instance de télécharger l'image de test et de l'exécuter dans le conteneur.
L'instance Alibaba Cloud ECS (https://www.alibabacloud.com/en/product/ecs) vous permet d'utiliser des images pour créer des clusters ECS avec la même configuration. De même, le conteneur Docker a une image. Conceptuellement, les deux sont très similaires. Basé sur la documentation officielle de Docker.
Une image de conteneur est un progiciel exécutable léger et autonome qui contient tout ce dont vous avez besoin pour l'exécuter: code, runtime, outils système, bibliothèques système, paramètres.
Vous pouvez voir le conteneur en cours d'exécution en exécutant $ sudo docker ps
.
Une image, en revanche, est un fichier inactif et immuable, tel qu'un instantané d'un conteneur. L'image est créée avec la commande build, et lorsqu'elle est démarrée avec la commande run, elle crée un conteneur.
Les images peuvent être visualisées en exécutant $ sudo docker images
.
Tout d'abord, installons Django et créons une application Django.
$ sudo pip install django==1.9
$ django-admin startproject djangoapp
Créez un fichier d'exigences dans le répertoire djangoapp pour définir les dépendances dont votre application a besoin.
$ cd djangoapp
$ nano requirements.txt
Ajoutez la dépendance suivante.
#requirements.txt
Django==1.9
gunicorn==19.6.0
Docker a la capacité de lire les instructions à partir d'un fichier Docker et de créer une image automatiquement. Le fichier Docker contient toutes les commandes et instructions que Docker utilise pour créer l'image.
Définissons quelques commandes de base utilisées dans le Dockerfile.
--FROM --Initialise une nouvelle étape de construction et définit l'image de base pour les instructions suivantes. Par conséquent, un Dockerfile valide doit commencer par une instruction FROM. --RUN --Exécute la commande spécifiée. --ADD --Copiez le fichier dans le conteneur. --EXPOSE: notifie à Docker que le conteneur écoute sur le port réseau spécifié au moment de l'exécution. --CMD - Fournit les valeurs par défaut pour l'exécution des conteneurs. Créons maintenant un fichier appelé Dockerfile.
$ nano Dockerfile
Tout d'abord, définissons toutes les propriétés nécessaires dans le Dockerfile. Définit l'image de base et le nom du responsable.
# base image
FROM python:2.7
# File Author / Maintainer
MAINTAINER Esther
Ensuite, copiez le dossier d'application dans le conteneur et définissez le répertoire dans lequel CMD sera exécuté.
# Copy the application folder inside the container
ADD . /usr/src/app
# set the default directory where CMD will execute
WORKDIR /usr/src/app
Enfin, définissez la commande par défaut et exécutez-la.
CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3
Le Dockerfile final devrait ressembler à ceci:
# set the base image
FROM python:2.7
# File Author / Maintainer
MAINTAINER Esther
#add project files to the usr/src/app folder
ADD . /usr/src/app
#set directoty where CMD will execute
WORKDIR /usr/src/app
COPY requirements.txt ./
# Get pip to download and install requirements:
RUN pip install --no-cache-dir -r requirements.txt
# Expose ports
EXPOSE 8000
# default command to execute
CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3
Exécutez la commande suivante pour créer l'image docker.
$ sudo docker build -t django_application_image .
Sending build context to Docker daemon 12.8kB
Step 1/7 : FROM python:2.7
---> 2863c80c418c
Step 2/7 : ADD . /usr/src/app
---> 09b03ff8466e
Step 3/7 : WORKDIR /usr/src/app
Removing intermediate container a71a3bf6af90
---> 3186c92adc85
Step 4/7 : COPY requirements.txt ./
---> 701c0be5e039
Step 5/7 : RUN pip install --no-cache-dir -r requirements.txt
---> Running in ed034f98db74
Collecting Django==1.9 (from -r requirements.txt (line 1))
Downloading Django-1.9-py2.py3-none-any.whl (6.6MB)
Collecting gunicorn==19.6.0 (from -r requirements.txt (line 2))
Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB)
Installing collected packages: Django, gunicorn
Successfully installed Django-1.9 gunicorn-19.6.0
Removing intermediate container ed034f98db74
---> 1ffd08204a07
Step 6/7 : EXPOSE 8000
---> Running in 987b48e1a4ef
Removing intermediate container 987b48e1a4ef
---> ef889d6e8fcb
Step 7/7 : CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3
---> Running in 4d929e361d0f
Removing intermediate container 4d929e361d0f
---> c6baca437c64
Successfully built c6baca437c64
Successfully tagged django_application_image:latest
L'image construite se trouve dans le registre d'images Docker local de la machine. Pour voir les images, exécutez $ sudo docker images
.
REPOSITORY TAG IMAGE ID CREATED SIZE
django_application_image latest c6baca437c64 34 minutes ago 702MB
$ sudo docker run -p 8000:8000 -i -t django_application_image
[2018-03-25 12:29:08 +0000] [1] [INFO] Starting gunicorn 19.6.0
[2018-03-25 12:29:08 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000
[2018-03-25 12:29:08 +0000] [1] [INFO] Using worker: sync
[2018-03-25 12:29:08 +0000] [8] [INFO] Booting worker with pid: 8
[2018-03-25 12:29:08 +0000] [9] [INFO] Booting worker with pid: 9
[2018-03-25 12:29:08 +0000] [10] [INFO] Booting worker with pid: 10
Un message s'affiche sur http://0.0.0.0:8000 indiquant que ** gunicorn ** entretient l'application. Vous devriez être redirigé vers l'adresse IP de votre serveur (adresse_ip: 8000) et vous devriez voir la page d'accueil de Django.
Pour voir un conteneur en cours d'exécution
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
100695b41a0a django_application_image "/bin/sh -c 'exec gu…" 13 seconds ago Exited (0) 4 seconds ago hopeful_easley
Lorsque vous utilisez Docker, vous rencontrez parfois des problèmes. La première chose à faire lorsqu'une erreur se produit est de vérifier le fichier journal Docker.
Docker et d'autres conteneurs sont de puissantes alternatives aux machines virtuelles traditionnelles pour le développement d'applications. Pour plus d'informations sur la façon d'exécuter des conteneurs sur Alibaba Cloud, veuillez visiter la page Container Services (https://www.alibabacloud.com/en/product/container-service).
Recommended Posts