** Docker ** ist eine Technologie, mit der Anwendungen mithilfe von Containern einfach erstellt, bereitgestellt und ausgeführt werden können.
Docker ist eine Technologie, mit der Anwendungen mithilfe von Containern einfach erstellt, bereitgestellt und ausgeführt werden können. Mit Containern können Entwickler alle Komponenten verpacken, die sie für ihre Anwendung benötigen, und sie später als Pakete versenden. Außerdem können Sie mehr Anwendungen auf demselben Server ausführen.
Mit Docker sind Anwendungen, die auf Containern ausgeführt werden, voneinander isoliert, was ein höheres Maß an Sicherheit bietet. Darüber hinaus garantiert Docker, dass jeder Container über seine eigenen Ressourcen verfügt, sodass die Anwendung nur die zugewiesenen Ressourcen verwendet.
Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:
Melden Sie sich mit dem Befehl ssh beim Server an.
$ ssh [email protected]
Aktualisieren Sie das Ubuntu-Paket.
$ sudo apt-get update
Installieren Sie die neueste Version von Docker mit dem folgenden Befehl.
$ sudo apt-get install docker
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Docker korrekt installiert ist:
$ sudo docker run hello-world
Bei korrekter Ausführung sollte der obige Befehl es der Instanz ermöglichen, das Testabbild herunterzuladen und im Container auszuführen.
Mit der Alibaba Cloud ECS-Instanz (https://www.alibabacloud.com/de/product/ecs) können Sie mithilfe von Bildern ECS-Cluster mit derselben Konfiguration erstellen. Ebenso hat der Docker-Container ein Bild. Konzeptionell sind sich die beiden sehr ähnlich. Basierend auf der offiziellen Dokumentation von Docker.
Ein Container-Image ist ein leichtes, eigenständiges, ausführbares Softwarepaket, das alles enthält, was Sie zum Ausführen benötigen: Code, Laufzeit, Systemtools, Systembibliotheken, Einstellungen.
Sie können den laufenden Container sehen, indem Sie $ sudo docker ps
ausführen.
Ein Bild hingegen ist eine inaktive, unveränderliche Datei, z. B. eine Momentaufnahme eines Containers. Das Image wird mit dem Befehl build erstellt und beim Starten mit dem Befehl run wird ein Container erstellt.
Bilder können durch Ausführen von "$ sudo docker images" angezeigt werden.
Zuerst installieren wir Django und erstellen eine Django-Anwendung.
$ sudo pip install django==1.9
$ django-admin startproject djangoapp
Erstellen Sie eine Anforderungsdatei im Verzeichnis djangoapp, um die Abhängigkeiten zu definieren, die Ihre Anwendung benötigt.
$ cd djangoapp
$ nano requirements.txt
Fügen Sie die folgende Abhängigkeit hinzu.
#requirements.txt
Django==1.9
gunicorn==19.6.0
Docker kann Anweisungen aus einer Docker-Datei lesen und automatisch ein Image erstellen. Die Docker-Datei enthält alle Befehle und Anweisungen, mit denen Docker das Image erstellt.
Definieren wir einige grundlegende Befehle, die in der Docker-Datei verwendet werden.
--FROM - Initialisiert eine neue Erstellungsphase und legt das Basis-Image für nachfolgende Anweisungen fest. Daher muss eine gültige Docker-Datei mit einer FROM-Anweisung beginnen. --RUN - Führt den angegebenen Befehl aus. --ADD --Kopiert die Datei in den Container. --EXPOSE - Benachrichtigt Docker, dass der Container zur Laufzeit den angegebenen Netzwerkport überwacht. --CMD - Bietet Standardeinstellungen für die Ausführung von Containern. Jetzt erstellen wir eine Datei namens Dockerfile.
$ nano Dockerfile
Definieren wir zunächst alle erforderlichen Eigenschaften in der Docker-Datei. Definiert das Basis-Image und den Namen des Betreuers.
# base image
FROM python:2.7
# File Author / Maintainer
MAINTAINER Esther
Kopieren Sie als Nächstes den Anwendungsordner in den Container und definieren Sie das Verzeichnis, in dem CMD ausgeführt wird.
# Copy the application folder inside the container
ADD . /usr/src/app
# set the default directory where CMD will execute
WORKDIR /usr/src/app
Legen Sie abschließend den Standardbefehl fest und führen Sie ihn aus.
CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3
Die endgültige Docker-Datei sollte folgendermaßen aussehen:
# 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
Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen.
$ 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
Das erstellte Image befindet sich in der lokalen Docker-Image-Registrierung des Computers. Um die Bilder anzuzeigen, führen Sie "$ sudo docker images" aus.
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
Unter http://0.0.0.0:8000 wird eine Meldung angezeigt, dass ** gunicorn ** die App wartet. Sie sollten zur IP-Adresse Ihres Servers (IP-Adresse: 8000) weitergeleitet werden und die Django-Begrüßungsseite sehen.
Um einen laufenden Container zu sehen
$ 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
Bei der Verwendung von Docker treten manchmal Probleme auf. Wenn ein Fehler auftritt, müssen Sie zunächst die Docker-Protokolldatei überprüfen.
Docker und andere Container sind leistungsstarke Alternativen zu herkömmlichen virtuellen Maschinen für die Anwendungsentwicklung. Weitere Informationen zum Ausführen von Containern in der Alibaba Cloud finden Sie auf der Seite Container Services (https://www.alibabacloud.com/de/product/container-service).
Recommended Posts