Heim Java javaLernprogramm Ausführliche Erläuterung der Docker-Studiennotizen zum Aufbau einer JAVA Tomcat-Betriebsumgebung

Ausführliche Erläuterung der Docker-Studiennotizen zum Aufbau einer JAVA Tomcat-Betriebsumgebung

Feb 03, 2017 pm 01:29 PM

Vorwort

Docker zielt darauf ab, eine automatisierte Bereitstellungslösung für Anwendungen bereitzustellen, die schnell einen Container (leichte virtuelle Maschine) auf einem Linux-System erstellt und Anwendungen über Konfigurationsdateien bereitstellt und ausführt Installation, Bereitstellung und Upgrade von Anwendungen. Durch die Verwendung von Containern können die Produktionsumgebung und die Entwicklungsumgebung problemlos getrennt werden, ohne sich gegenseitig zu beeinflussen. Dies ist die häufigste Methode von Docker. Weitere Spielmöglichkeiten umfassen groß angelegte Webanwendungen, Datenbankbereitstellung, kontinuierliche Bereitstellung, Cluster, Testumgebungen, serviceorientiertes Cloud Computing, virtuelle Desktop-VDI usw.

Subjektiver Eindruck: Docker ist in der Go-Sprache geschrieben, verwendet cgroup, um Ressourcenisolation zu erreichen, und die Containertechnologie verwendet LXC. Es bietet eine leichte Virtualisierungslösung, die Unix-Prozesse unabhängig ausführen kann. Es bietet eine Möglichkeit, die Bereitstellung von Software in einer sicheren, wiederholbaren Umgebung zu automatisieren. LXC-Befehle sind etwas kompliziert. Wenn Sie interessiert sind, finden Sie hier einen Artikel, den ich zuvor basierend auf LXC geschrieben habe (Erstellen einer einfachen Version der JAVA PAAS-Cloud-Plattform).

Die Implementierungsprinzipien, zugehörigen Theorien, Anwendungsszenarien usw. werden später in dieser Serie geschrieben. Hier ist ein kurzer, vollständig manueller Vorgeschmack zum Erstellen einer Tomcat-Laufumgebung auf Basis von Docker. Nachdem wir zunächst eine anständige Demo herausgebracht haben, können wir den Effekt sehen, der uns möglicherweise weiterhelfen kann.

Umgebung

In allen Umgebungen dieses Artikels wird ubuntu-13.10-server-amd64 auf VMware WorkStation ausgeführt. Theoretisch sind dies auch andere virtuelle Maschinen auch durchaus machbar.

Docker installieren

Docker Version 0.7 erfordert Linux-Kernel 3.8-Unterstützung und das AUFS-Dateisystem.

# 检查一下AUFS是否已安装
sudo apt-get update
sudo apt-get install linux-image-extra-`uname -r`
# 添加Docker repository key
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
# 添加Docker repository,并安装Docker
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
# 检查Docker是否已安装成功
sudo docker version
# 终端输出 Client version: 0.7.1
Go version (client): go1.2
Git commit (client): 88df052
Server version: 0.7.1
Git commit (server): 88df052
Go version (server): go1.2
Last stable version: 0.7.1
Nach dem Login kopieren

Sudo entfernen

Unter Ubuntu müssen Sie bei der Ausführung von Docker jedes Mal sudo und das Passwort eingeben. Das ist sehr ermüdend. Lassen Sie uns hier eine Feinabstimmung vornehmen und den aktuellen Benutzer ändern Ausführungsberechtigungen werden der entsprechenden Docker-Benutzergruppe hinzugefügt.

# 添加一个新的docker用户组
sudo groupadd docker
# 添加当前用户到docker用户组里,注意这里的yongboy为ubuntu server登录用户名
sudo gpasswd -a yongboy docker
# 重启Docker后台监护进程
sudo service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
sudo reboot
Nach dem Login kopieren

Installieren Sie eine virtuelle Docker-Instanz-Ubuntu-Maschine

Docker wird installiert und der Hintergrundprozess wird automatisch gestartet. Sie können die Instanz der virtuellen Maschine installieren (hier finden Sie Informationen zum Lernen/Verwenden). (die offizielle Demonstration) Tutorial-Spiegel als Beispiel):

docker pull learn/tutorial
Nach dem Login kopieren

Nachdem die Installation abgeschlossen ist, sehen Sie den Effekt

docker run learn/tutorial /bin/echo hello world
Nach dem Login kopieren

Geben Sie interaktiv die neu installierte virtuelle Maschine ein

docker run -i -t learn/tutorial /bin/bash
Nach dem Login kopieren

In der Maschine wird Folgendes angezeigt:

root@51774a81beb3:/#
Nach dem Login kopieren

zeigt an, dass Sie die interaktive Maschine eingegeben haben Umfeld.

Installieren Sie den SSH-Terminalserver, um uns die externe Nutzung des SSH-Clients für die Anmeldung und den Zugriff zu erleichtern.

apt-get update
apt-get install openssh-server
which sshd
/usr/sbin/sshd
mkdir /var/run/sshd
passwd #输入用户密码,我这里设置为123456,便于SSH客户端登陆使用
exit #退出
Nach dem Login kopieren

Erhalten Sie die gerade ausgeführte Instanzcontainer-ID.

#docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51774a81beb3 learn/tutorial:latest /bin/bash 3 minutes ago Exit 0 thirsty_pasteur
Nach dem Login kopieren

Sie können sehen, dass die Container-ID des aktuellen Vorgangs lautet: 51774a81beb3. Beachten Sie, dass alle Vorgänge nach der Ausführung übermittelt und für eine einfache SSH-Anmeldung gespeichert werden müssen:

docker commit 51774a81beb3 learn/tutorial
Nach dem Login kopieren

Diese Spiegelinstanz für längere Zeit als Hintergrundprozess ausführen:

docker run -d -p 22 -p 80:8080 learn/tutorial /usr/sbin/sshd -D
Nach dem Login kopieren

Der im Ubuntu-Container ausgeführte SSH-Server belegt Port 22 und -p 22 ist angegeben. -p 80:8080 bedeutet, dass unser Ubuntu Tomcat auf Port 8080 ausführt, der extern (außerhalb des Containers) zugeordnete Port jedoch 80 ist.

Überprüfen Sie zu diesem Zeitpunkt, ob es erfolgreich ausgeführt wird.

#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
871769a4f5ea learn/tutorial:latest /usr/sbin/sshd -D About a minute ago Up About a minute 0.0.0.0:49154->22/tcp, 0.0.0.0:80->8080/tcp focused_poincare
Nach dem Login kopieren

Beachten Sie, dass die zufällig zugewiesene SSH-Verbindungsportnummer hier 49154 ist:

ssh root@127.0.0.1 -p 49154
Nach dem Login kopieren

Geben Sie das Passwort ein, ist es in Ordnung ? Eingetragen? Sobald Sie SSH steuern, ist der Rest sehr einfach: Installieren Sie JDK, installieren Sie Tomcat usw., es liegt an Ihnen. Das Folgende ist das Installationsskript:

# 在ubuntu 12.04上安装oracle jdk 7
apt-get install python-software-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install -y wget
apt-get install oracle-java7-installer
java -version
# 下载tomcat 7.0.47
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.47/bin/apache-tomcat-7.0.47.tar.gz
# 解压,运行
tar xvf apache-tomcat-7.0.47.tar.gz
cd apache-tomcat-7.0.47
bin/startup.sh
Nach dem Login kopieren

Standardmäßig belegt Tomcat Port 8080. Beim Starten der Spiegelinstanz wurde gerade -p 80:8080 angegeben, Ubuntu-Spiegelinstanz / Der Container öffnet Port 8080, der dem Host-Port 80 zugeordnet ist. Wenn Sie die Host-IP-Adresse kennen, können Sie frei darauf zugreifen. Testen Sie es auf dem Host-Computer einfach über Curl:

curl http://192.168.190.131
Nach dem Login kopieren

Natürlich können Sie auch einen Browser verwenden, um darauf zuzugreifen.

In realen Situationen darf Tomcat Port 80 möglicherweise nicht direkt für die Außenwelt öffnen. Er befindet sich normalerweise hinter Nginx/Apache oder einer Firewall.

Zusammenfassung

Der Aufbau einer Tomcat-Laufzeitumgebung mit Hilfe von Docker ist im Allgemeinen sehr einfach und ermöglicht es uns, die Präsenz von PAAS zu erkennen. Ja, die Verwendung von Docker als zugrunde liegendem Dienst von PAAS ist an sich nicht kompliziert. Jetzt ist es an der Zeit, darüber zu sprechen, wie Skriptdateien zum Erstellen einer Image-Instanz verwendet werden, und gleichzeitig über die Implementierungsprinzipien und -mechanismen von Docker zu sprechen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Ausführlichere Erläuterungen zu Docker-Studiennotizen und verwandte Artikel zum Aufbau einer JAVA Tomcat-Betriebsumgebung finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Was ist der Unterschied zwischen Speicherlecks in Java -Programmen auf Arm- und X86 -Architektur -CPUs? Was ist der Unterschied zwischen Speicherlecks in Java -Programmen auf Arm- und X86 -Architektur -CPUs? Apr 19, 2025 pm 11:18 PM

Analyse des Gedächtnis -Leck -Phänomens von Java -Programmen zu verschiedenen Architektur -CPUs. In diesem Artikel wird ein Fall erläutert, in dem ein Java -Programm unterschiedliche Gedächtnisverhalten auf ARM- und X86 -Architektur -CPUs aufweist ...

Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Apr 19, 2025 pm 11:36 PM

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

Wie konvertieren Sie Namen in Zahlen, um Sortieren innerhalb von Gruppen zu implementieren? Wie konvertieren Sie Namen in Zahlen, um Sortieren innerhalb von Gruppen zu implementieren? Apr 19, 2025 pm 01:57 PM

Wie konvertieren Sie Namen in Zahlen, um Sortieren innerhalb von Gruppen zu implementieren? Bei der Sortierung von Benutzern in Gruppen ist es häufig erforderlich, den Namen des Benutzers in Zahlen umzuwandeln, damit er anders sein kann ...

See all articles