Docker
1 Docker Profil
1.1 Was ist Virtualisierung
In dem Computer, Virtualisierung (englisch: Virtualisierung) ist eine Ressource-Management-Technologie, die verschiedenen Einheiten die Ressourcen des Computers sind, wie Server, Netzwerk, Speicher und Speicher usw., abstrakt zu sein, nach der Umwandlung präsentierte die Inter Einheit Struktur zu brechen Hindernisse können nicht geschnitten werden, so dass der Benutzer als das Original besser konfigurieren, kann diese Ressourcen zu nutzen. Viele dieser neuen virtuellen Ressourcen ist nicht die Art und Weise der vorhandenen Mittel einzurichten, geographische oder physikalische Konfiguration beschränkt ist. Virtualisierte Ressourcen bezeichnet im Allgemeinen Rechenleistung und Datenspeicherung.
In der aktuellen Produktionsumgebung wird die Virtualisierungstechnologie hauptsächlich Hochleistungskapazitäten physische Hardware zu lösen und die alte alte Hardwarekapazität ist zu gering Reorganisation Wiederverwendung, Transparenz physische Hardware des unter der Verwendung von physikalischen Hardware-Ressourcen zu maximieren in vollem Umfang nutzen
Viele Arten von Virtualisierungstechnologien, wie zum Beispiel: Software-Virtualisierung und Hardware-Virtualisierung, Speicher-Virtualisierung, Netzwerk-Virtualisierung (VIP), Desktop-Virtualisierung, Service-Virtualisierung, virtuelle Maschinen und so weiter.
1.2 Was ist der Docker
Docker ist ein Open - Source - Projekt, Anfang 2013 geboren wurde, war es zunächst ein Amateur - Projekt interne dotCloud Unternehmen. Es basiert auf Googles Markteinführung der Go Sprache. Projekt schloss sich später der Linux Foundation, die Apache - 2.0 - Protokoll - Compliance, Projektcode bei GitHub Wartungsarbeiten an.
Docker, da die Open-Source-große Aufmerksamkeit und Diskussion, dass dotCloud Unternehmen später Docker Inc. umbenannt wurden Redhat hat seine Unterstützung Docker RHEL6.5 konzentriert in, Google wird auch in seinen PaaS-Angeboten weit verbreitet.
Docker Projektes hat mich zum Ziel ist es, eine leichte Betriebssystem-Virtualisierungslösung zu erreichen. Docker ist die Grundlage für Linux Container (LXC) Technologie.
Auf der Grundlage des LXC Docker war weiteres Paket, so dass die Benutzer nicht über Container-Management benötigt Pflege, den Betrieb einfacher zu machen. Benutzeraktion Docker-Container genau wie Sie eine schnelle leichte virtuelle Maschine so einfach.
Warum Docker?
(1) schnell Chips.
Benutzer müssen nur ein paar Minuten, Sie Ihr eigenes Programm setzen können „Docker von.“ Docker ist abhängig von der „copy-on-write“ (copy-on-write) -Modell, die Änderungen an der Anwendung sehr schnell, kann gesagt werden, zu erreichen „aufgrund von Herz, dass die Codeänderung“ Reich.
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。
Logische Klassifizierung (2) Aufgaben
Verwenden Docker, die Entwickler benötigen, nur um die Anwendung in dem Behälter läuft, besorgt zu sein, und das Betriebs- und Wartungspersonal muß nur besorgt sein, wie man die Behälter zu verwalten. Docker Design Zweck ist es, die Produktionsumgebung Konsistenz Entwickler Code schreiben Entwicklungsumgebung und Anwendungen zu verbessern eingesetzt werden. Wodurch die Art von „Entwicklung alles normal ist, sicherlich den Betrieb und die Wartung Probleme (die Testumgebung ist normal, auf der Linie aus der Frage ankommt, ist sicherlich die Frage der Betrieb und Wartung).“
(3) ein schneller und effizienter Entwicklungs-Lebenszyklus
Eines der Ziele ist es, den Code von Docker Entwicklung zu verkürzen, bis zur Bereitstellung testen, on-line-Betriebszyklus, so dass Ihre Anwendungsportabilität hat, leicht zu bauen und eine gute Zusammenarbeit. (Beliebte Sache zu sagen, ist Docker wie eine Schachtel, die eine Menge Gegenstände halten kann, wenn Sie diese Objekte benötigen, können Sie die große Kiste direkt nehmen weg, ohne die Notwendigkeit für ein Stück aus dem Karton entnommen.)
(4) die Förderung der Verwendung von Service-Oriented Architecture
Docker fördert auch serviceorientierte Architektur und Mikroarchitektur Dienstleistungen. Docker einen einzelnen Behälter empfiehlt nur eine Anwendung oder einen Prozess ausgeführt, so dass ein verteiltes Anwendungsmodell bilden, in diesem Modell, Anwendung oder Dienst als eine Reihe von miteinander verbundenen im Innern des Behälters dargestellt werden, so dass das verteilte Bereitstellung App, Erweiterung oder Debuggen von Anwendungen sind sehr einfach, aber auch die Selbstbeobachtung des Programms verbessern. (Natürlich können Sie mehrere Anwendungen in einem Container ausgeführt wird)
1.3 Virtual Machine Container und vergleichen
Das untere Bild der Unterschiede zwischen Docker vergleicht und traditionelle Art der Virtualisierung, virtualisiert Behälter sichtbar sind, die direkte Wiederverwendung der lokale Host-Betriebssystem, während die traditionelle Art und Weise in Hardware-Ebene auf der Betriebssystemebene implementiert ist.
Verglichen mit der traditionellen virtuellen Maschine wird Docker Vorteil als schneller Start reflektiert, ein kleines Volumen nehmen.
1.4 Docker Komponenten
1.4.1 Docker Server und Client
Docker ist ein Client - Server (C / S) Architektur Programm. Der Client nur auf Docker Docker-Server oder Daemon benötigt eine Anforderung, der Server oder Daemon wird die ganze Arbeit machen und gibt das Ergebnis. Docker stellt eine Befehlszeilenprogramm Docker und einen Satz von RESTful API. Sie können Docker Dämon und Client auf demselben Host ausgeführt werden, können Sie auch vom lokalen Client verbinden Remote-Docker Docker-Daemon auf einer anderen Host-Maschine laufen zu lassen.
1.4.2 Docker Spiegelbehälter
Mirroring ist der Eckpfeiler der Docker ist. Benutzer können ihre eigenen Container-basierte Spiegelung auszuführen. Spiegel auch Docker „build“ Teil des Lebenszyklus. Spiegelschicht-Struktur basiert auf einem kombinierten Dateisystem schrittweise eine Reihe von Anweisungen aufzubauen. Zum Beispiel:
Fügen Sie eine Datei;
Ausführen eines Befehls;
Öffnen Sie ein Fenster.
Der Behälter kann auch als gespiegelt wird „Quellcode“. Spiegel sehr klein, sehr „portable“, die einfache Teilen, gespeichert und aktualisiert.
Docker können Sie bauen und deploy Container helfen, die Sie gerade benötigen, um Ihre eigene Anwendung oder einen Dienst kann in Behälter verpackt werden. Container werden gespiegelte Boote kann das Schiff auf einem oder mehr Prozesse laufen. Wir können glauben, dass der Spiegel eingebaut ist oder Docker Stadium des Lebenszyklus verpackt, und der Behälter gestartet oder die Umsetzungsphase. Basierend auf einem gespiegelten Boot-Containern, sobald der Behälter die Inbetriebnahme abgeschlossen ist, werden wir in der Lage sein, um den Behälter anzumelden Installation von Software oder Dienstleistungen, die sie benötigen.
So Docker Behälter ist:
Ein Bildformat;
Einige Standard-Betriebs-Säule;
Eine Ausführungsumgebung.
Docker stützt sich auf das Konzept eines Standardcontainers. Die Standard-Containerladung auf der ganzen Welt geliefert, Dockarbeiter, dieses Modell zu ihrem eigenen Design verwenden, der einzige Unterschied ist: Containertransport von Gütern, den Transport und Docker Software.
和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。
Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。
1.4.3 Registry (Registry)
Registry Docker mit Benutzern speichern das Bild aufgebaut. Registry ist in öffentliche und private zwei Arten unterteilt. Docker Unternehmen betreibt ein öffentliches Register der Docker Hub genannt. Benutzer können für ein Konto bei Docker Hub anmelden, teilen und speichern ihre eigenen Bild (Anmerkung: Docker Hub Riese langsam zum Download Bild, können Sie Ihre eigenen Registry bauen).
https://hub.docker.com/
2 Docker Installation und Inbetriebnahme
2.1 Installation Docker
Docker offiziell empfohlen, in Ubuntu zu installieren, da Docker auf Ubuntu-Version basiert, aber Probleme entstehen allgemeine Docker Ubuntu ist das erste Update oder Patch. In vielen Versionen von CentOS ist nicht von einigen der neueste Patch-Update-Paket unterstützt.
Da wir die Lernumgebung verwenden, ist es CentOS, so hier wir Docker auf CentOS installiert. Hinweis: Es wird empfohlen, mindestens CentOS7.x Version zu installieren, in CentOS6.x Version, müssen Sie unterstützen keine Updates installieren, bevor Sie eine Menge anderer Umwelt- und Docker viele Patches installieren.
Bitte Direktmontage Lehrplan Unterstützung Centos7.x Spiegel
(1) yum Update auf das neueste Paket
sudo yum update
(2) erfordern Installationspaket, yum-UTIL liefern yum-config-Manager-Funktion, sind die anderen zwei abhängige Device Mapper getrieben
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3) Satz yum-Source-Cloud Ali
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4) montiert Andockfensters
sudo yum install docker-ce
(5) Nachdem die Version anzeigen Docker Installation
docker -v
2.2 Set Spiegel ustc
ustc ist ein Veteran der Dienstleister Linux-Spiegels, und so weit in Ubuntu 5.04-Version, wenn im Einsatz. Andockfensters Spiegel Beschleuniger ustc Geschwindigkeit schnell. Einer der Vorteile ustc Docker Spiegels besteht keine Notwendigkeit zu registrieren, ist ein echter öffentlicher Dienst.
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
Bearbeiten Sie die Datei:
vi /etc/docker/daemon.json
Geben Sie Folgendes in der Datei:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2.3 Docker Start und Stopp
systemctl Befehl ist der Befehl Systemdienste - Manager
Starten Sie Docker:
systemctl start docker
Stop-Docker:
systemctl stop docker
Restart Docker:
systemctl restart docker
Sehen Sie Docker Status:
systemctl status docker
Boot:
systemctl enable docker
Ansicht Docker Zusammenfassung Informationen
docker info
Ansicht Docker-Hilfe
docker --help
3 Allgemeine Befehle
3.1 Spiegelung Befehl
3.1.1 Spiegel
docker images
REPOSITORY: Bildname
TAG: Image-Tag
IMAGE-ID: ID-Spiegelung
ERSTELLT: Erstellungsdatum gespiegelt (nicht der Erwerbszeitpunkt des Spiegels)
SIZE: Bildgröße
Diese Bilder werden in den Host-Docker / var / lib / Docker Verzeichnis gespeichert
3.1.2 Suchspiegel
Wenn Sie das Bild finden müssen Sie aus dem Netzwerk wollen, können Sie mit dem folgenden Befehl suchen
docker search 镜像名称
Name: Lager-Name
BESCHREIBUNG: Spiegel Beschreibung
STARS: Benutzerbewertung, ein Spiegel der Reaktions Popularität
OFFIZIELL: Sind offizielle
AUTOMATISIERE: automatisch aufzubauen, was darauf hinweist, dass der Spiegel automatisch Erstellungsprozess durch den Hub erzeugt Docker
3.1.3 Pull-Spiegelung
Ziehen Spiegelbild von der zentralen auf die lokale Repository heruntergeladen
docker pull 镜像名称
Zum Beispiel möchte ich centos7 Spiegel zum Download
docker pull centos:7
3.1.4 entfernen, um den Spiegel
Spiegel Spiegel ID löschen Presse
docker rmi 镜像ID
Löschen Sie alle Spiegel
docker rmi `docker images -q`
3.2 schiffsbezogene Befehle
3.2.1 View-Container
View-Container Lauf
docker ps
Alle Behälter
docker ps –a
Sehen Sie sich den letzten Lauf des Behälters
docker ps –l
Prüfstopp Behälter
docker ps -f status=exited
3.2.2 Erstellen und Startbehälter
Erstellen Sie einen benutzerdefinierten Container Parameter:
Erstellen Sie einen Container-Befehl: Docker Lauf
-I: zeigt den Betriebsbehälter
-t: ein hinterer Container beginnt seine Befehlszeile eingeben. Nach Zugabe dieser beiden Parameter wird das Schiff der Lage sein Protokoll in erstellen. Das ist ein Pseudo-Terminal zugeordnet.
-name: benannte Container erstellt.
-v: steht für die Verzeichnis-Zuordnungsbeziehung (ersteres ist das Host-Verzeichnis, das in ein Verzeichnis auf dem Host zugeordnet ist), können Sie mehr -v mehrere Verzeichnisse oder Dateizuordnungen tun. Hinweis: Es ist das Verzeichnis für die Zuordnung ist, die Änderungen auf dem Host und dann den Behälter zu teilen.
-d: Lauf hinter dem Parameter -d einen Wächter des Behälters schafft nicht automatisch protokollierte Behälter nach (dieser Behälter im Hintergrund erzeugt wird, das Hinzufügen -i -t, wenn nur zwei Parameter, wird es automatisch nach der Erstellung gehen Container).
-p: Abbilden des Port, ist die erstere ein Host-Port, der in dem Anschluss des Behälters zugeordnet ist. Sie können mehr -p Port-Mapping verwenden, mehr zu tun
Erstellen Sie einen Behälter (1) im interaktiven Modus
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
Dann sehen wir den Befehl ps, können Sie den Start des Schiffes sehen gefunden wurde, Zustand Zustand starten
Verlassen Sie den aktuellen Container
exit
(2) schaffen den Container Typ-Schutzmodus:
docker run -di --name=容器名称 镜像名称:标签
Einloggen Hüterin Container Möglichkeiten:
docker exec -it 容器名称 (或者容器ID) /bin/bash
3.2.3 Stopp und Start des Behälters
Stoppen Sie den Behälter:
docker stop 容器名称(或者容器ID)
Start Behälter:
docker start 容器名称(或者容器ID)
3.2.4 Kopieren von Dateien
Sie können den Befehl cp verwenden, wenn wir die Datei in den Behälter kopieren müssen
docker cp 需要拷贝的文件或目录 容器名称:容器目录
Dateien können auch aus dem Container kopiert werden
docker cp 容器名称:容器目录 需要拷贝的文件或目录
3.2.5 Verzeichnis montiert
Wenn wir einen Container erstellen können, werden die Container - Verzeichnis in dem Verzeichnis - Host zugeordnet, so dass wir die Host - Datei in ein Verzeichnis , um den Behälter zu beeinflussen ändern können.
Erstellen Sie einen Container Add -v Parameter zurück an den Host - Verzeichnis: Behälter, zum Beispiel:
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
Wenn Sie ein Multi-Level-Verzeichnis, nicht genügend Berechtigungen Prompt teilen können angezeigt werden.
Dies liegt daran, das Sicherheitsmodul selinux CentOS7 Autorität des Verbots, und wir müssen Parameter hinzufügen --privileged = true, das Problem zu lösen, ohne die Erlaubnis Verzeichnis gemountet
3.2.6 IP-Adresse anzeigen Container
Wir können das Schiff sehen eine Vielzahl von Daten den folgenden Befehl ausführen
docker inspect 容器名称(容器ID)
Sie können auch den folgenden Befehl, um die direkte Ausgabe direkte IP-Adresse durchführen
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
3.2.7 Löschbehälter
Entfernt die angegebenen Container:
docker rm 容器名称(容器ID)
4 Anwendungsbereitstellung
4.1 MySQL Einsatz
(1) Ziehen Spiegel mysql
docker pull centos/mysql-57-centos7
(2) Erzeugen der Behälter
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
Die -p port mapping, Port-Mapping-Format Host: Port Behälter Laufzeit
-e Fügen Sie die Umgebungsvariable MYSQL_ROOT_PASSWORD im Namen der Login-Passwort des Root-Benutzers
(3) Remote-Login-mysql
Anschließen des Host-IP, wie angegeben Port 33306
4.2 tomcat Einsatz
(1) Spiegel Pull
docker pull tomcat:7-jre7
(2) Erzeugen der Behälter
Erstellen Sie einen Container -p die Adresse Mapping zeigt
docker run -di --name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
4.3 Nginx Einsatz
(1) Spiegel Pull
docker pull nginx
(2) Erstellen Nginx Behälter
docker run -di --name=mynginx -p 80:80 nginx
4.4 Redis Einsatz
(1) Spiegel Pull
docker pull redis
(2) Erzeugen der Behälter
docker run -di --name=myredis -p 6379:6379 redis
5 Migration und Sicherung
Bild Vorratsbehälter 5.1
Wir können den folgenden Befehl ein Schiff für den Spiegel speichern
docker commit mynginx mynginx_i
5.2 Image-Backup
Wir können mit dem folgenden Befehl als tar-Dateien speichern Sie das Bild
docker save -o mynginx.tar mynginx_i
5.3 Bildwiederherstellung und Migration
Zuerst entfernten wir mynginx_img Spiegel und führen Sie dann den Befehl wiederhergestellt werden
docker load -i mynginx.tar
-I Eingabedatei
Nach wieder Spiegel ausführen, können Sie das Bild sehen, wird gestellt
6 Dockerfile
6.1 Was ist Dockerfile
Dockerfile Skript ist eine Reihe von Befehlen und Parametern besteht diese Befehle an die Bildbasis und schließlich ein neues Bild erstellen.
1. Für Entwickler: bietet eine konsistente Entwicklungsumgebung für das Entwicklungsteam;
2, für die Tester: Sie haben ein direktes Spiegelbild aufgebaut nehmen können , wenn ein neues Bild von Dockerfile Datei zu entwickeln oder bauen beginnen mit der Arbeit;
3, für den Transport und Wartungspersonal: zum Zeitpunkt der Bereitstellung, ermöglicht eine nahtlose Migration von Anwendungen.
6.2 Allgemeine Befehle
Befehl | Wirkung |
---|---|
VON image_name: tag | Welche definiert die Verwendung des Grundbildes, um den Prozess des Aufbaus zu starten |
MAINTAINER user_name | Haftungsausschluss Spiegel Schöpfer |
ENV Schlüsselwert | Set Umgebungsvariablen (Sie können mehrere schreiben) |
Führen Sie den Befehl aus | Dockerfile ist ein Kernteil (Sie können mehrere schreiben) |
ADD source_dir / Datei DEST_DIR / Datei | Kopieren Sie die Datei auf dem Host des Behälters, wenn es sich um eine komprimierte Datei ist, wird es automatisch extrahieren nach der Replikation |
COPY source_dir / Datei DEST_DIR / Datei | Und wie ADD, aber wenn es nicht eine komprimierte Datei und entpacken |
WORKDIR path_dir | Stellen Sie das Arbeitsverzeichnis |
6.3 mit einem Skript einen Spiegel erstellen
Schritte:
(1) Erstellen Sie ein Verzeichnis
mkdir –p /usr/local/dockerjdk8
(2) Download jdk-8u171-linux-x64.tar.gz und an den Server (Virtual Machine) hochgeladen im Verzeichnis / usr / local / dockerjdk8 Verzeichnis
(3) eine Datei Dockerfile vi Dockerfile
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(4) Konstruktion des Spiegels Run
docker build -t='jdk1.8' .
Notieren Sie sich die Rückseite der Räume und die Punkte, nicht auslassen
(5), ob einen vollständigen Spiegel zu etablieren
docker images
7 Docker private Lager
7.1 Privatlager einrichten und Konfiguration
(1) Pull private Lager Bild (dieser Schritt weggelassen)
docker pull registry
(2) Starten private Containerlager
docker run -di --name=registry -p 5000:5000 registry
(3) öffnen Sie den Browser und geben Sie die Adresse http://192.168.184.141:5000/v2/_catalog siehe {"repositories":[]}
Darstellung der privaten Lager- und baut ein erfolgreicher Inhalt leer ist
(4) modifiziertes daemon.json
vi /etc/docker/daemon.json
Fügen Sie den folgenden Inhalt, speichern und zu beenden.
{"insecure-registries":["192.168.184.141:5000"]}
Dieser Schritt ermöglicht Docker Vertrauen für private Lageradresse
(5) Restart Docker-Service
systemctl restart docker
7.2 Mirroring hochgeladen zu einem privaten Lager
(1) Dieses private Spiegelbild Lager markiert
docker tag jdk1.8 192.168.184.141:5000/jdk1.8
(2) Behälter wieder zu starten PW
docker start registry
(3) etikettiertes Bild Hochladen
docker push 192.168.184.141:5000/jdk1.8