Heim > Java > javaLernprogramm > Docker erstellt eine Beispielanalyse für eine Java-Web-Laufumgebung

Docker erstellt eine Beispielanalyse für eine Java-Web-Laufumgebung

王林
Freigeben: 2023-04-25 08:49:06
nach vorne
1140 Leute haben es durchsucht

Lassen Sie uns zunächst die Architektur der herkömmlichen Virtualisierungstechnologie überprüfen:
Docker搭建Java Web运行环境实例分析

Es ist ersichtlich, dass wir mithilfe der Virtualisierungstechnologie mehrere virtuelle Maschinen auf dem Host-Betriebssystem und in jeder virtuellen Maschine installieren können. Nachdem ein virtuelles Betriebssystem implementiert wurde, Anschließend können Sie die benötigten Anwendungen auf dem virtuellen Betriebssystem installieren. Das alles scheint sehr einfach zu sein, aber die technischen Details sind ziemlich rätselhaft und selbst großartige Leute sind möglicherweise nicht in der Lage, es klar zu erklären.

Jeder, der eine virtuelle Maschine verwendet hat, sollte wissen, dass das Starten einer virtuellen Maschine wie das Starten eines Computers ist. Der Initialisierungsprozess ist ziemlich langsam. Wir müssen lange warten, bis wir die Anmeldeschnittstelle sehen können. Sobald die virtuelle Maschine gestartet ist, kann eine Netzwerkverbindung mit dem Host hergestellt werden, um sicherzustellen, dass die virtuelle Maschine und der Host miteinander verbunden sind. Verschiedene virtuelle Maschinen sind voneinander isoliert, das heißt, jede virtuelle Maschine weiß nicht, dass die andere existiert, aber jede virtuelle Maschine belegt die Hardware- und Netzwerkressourcen der Hostmaschine.

Vergleichen wir noch einmal die Architektur der Docker-Technologie:
Docker搭建Java Web运行环境实例分析

Es ist ersichtlich, dass auf dem Host-Betriebssystem ein Docker-Dienst ausgeführt wird (oder „Docker-Engine“ genannt wird). Auf diesem Dienst können wir mehrere Docker öffnen Container, und jeder Docker-Container kann seine eigenen erforderlichen Anwendungen ausführen. Außerdem belegen sie alle die Hardware- und Netzwerkressourcen des Hosts.

Im Vergleich zu virtuellen Maschinen unterscheiden sich Docker-Container hinsichtlich der technischen Umsetzung grundlegend. Das Starten eines Containers dauert nur einen Wimpernschlag. Unabhängig davon, ob es sich um eine virtuelle Maschine oder einen Docker-Container handelt, sind sie darauf ausgelegt, die laufende Umgebung der Anwendung zu isolieren, unsere Hardwareressourcen zu schonen und unseren Entwicklern Vorteile zu bieten.

Voraussetzungen

Zuerst müssen Sie ein Centos-Betriebssystem oder eine virtuelle Maschine vorbereiten. Kurz gesagt, Sie können über Linux-Client-Tools auf das Centos-Betriebssystem zugreifen.

Es sollte beachtet werden, dass Docker auch auf Ubuntu oder anderen Linux-Betriebssystemen gespielt werden kann, aber in diesem Artikel wird nur Centos als Beispiel verwendet, das ist alles.

Centos-spezifische Anforderungen sind wie folgt:

  • Muss ein 64-Bit-Betriebssystem sein

  • Es wird empfohlen, dass der Kernel über 3.8 ist.

Sehen Sie sich Ihren Centos-Kernel mit dem folgenden Befehl an:

uname -r
Nach dem Login kopieren

Wenn nach der Ausführung des obigen Befehls die Ausgabe erfolgt, dass die Kernel-Versionsnummer niedriger als 3.8 ist, verwenden Sie bitte die folgende Methode, um Ihren Linux-Kernel zu aktualisieren.

Für Centos 6.5 ist die Standardkernelversion 2.6. Installieren Sie zunächst den neuesten Kernel mit dem folgenden Befehl:

rpm --import https://www.elrepo.org/rpm-gpg-key-elrepo.org
rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum -y --enablerepo=elrepo-kernel install kernel-lt
Nach dem Login kopieren

Bearbeiten Sie dann die folgende Konfigurationsdatei:

vi /etc/grub.conf
Nach dem Login kopieren

Ändern Sie Standard=1 in Standard=0.

Zum Schluss starten Sie das Betriebssystem mit dem Reboot-Befehl neu.

Wenn nach dem Neustart nichts schief geht, überprüfen Sie den Kernel erneut. Ihr Centos-Kernel wird als 3.10 angezeigt.

Wenn Sie hierher kommen, stimmen die Ergebnisse, die Sie erwarten, mit unseren überein. Glückwunsch! Lassen Sie uns gemeinsam Docker installieren.

Docker installieren

Verwenden Sie einfach den folgenden Befehl, um die Docker-Software zu installieren:

rpm -uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io
Nach dem Login kopieren

Mit dem folgenden Befehl können Sie überprüfen, ob Docker erfolgreich installiert wurde:

docker version
Nach dem Login kopieren

Wenn die Versionsnummer von Docker ausgegeben wird, bedeutet dies die Die Installation ist erfolgreich. Jetzt können Sie Docker verwenden.

Sie können den Docker-Dienst über den folgenden Befehl starten:

service docker start
Nach dem Login kopieren

So geht's

Genau wie bei der Installation von Software benötigen wir zunächst eine CD mit der darauf gebrannten Software, wenn Sie eine virtuelle CD-ROM verwenden Auf dem Laufwerk müssen Sie ein Programm mit dem Namen „Spiegeldatei“ ausführen, über das die Software installiert wird. In der Docker-Welt gibt es auch etwas, das „Spiegel“ genannt wird. Das von uns benötigte Betriebssystem wird in diesem Artikel allgemein als „Docker-Image“ bezeichnet.

Dann stellt sich die Frage: Wo laden wir das Bild herunter?

Die offizielle Website von Docker stellt zwar alle Bild-Download-Adressen bereit, ist aber in China leider nicht zugänglich. Glücklicherweise bieten gutherzige Menschen in China eine chinesische Docker-Website an, auf der wir das benötigte Docker-Image herunterladen können.

Laden Sie das Bild herunter

Wir könnten genauso gut Centos als Beispiel nehmen und ein Centos-Bild durch die folgenden Schritte herunterladen.

Besuchen Sie zunächst die chinesische Docker-Website und suchen Sie auf der Startseite nach dem Bild mit dem Namen „Centos“. In den Suchergebnissen gibt es ein „offizielles Bild“, das wir benötigen.

Geben Sie dann die offizielle Bildseite von Centos ein. Im Eingabefeld „Dieses Repository abrufen“ gibt es einen Befehl. Kopieren Sie ihn, führen Sie den Befehl in Ihrer eigenen Befehlszeile aus und das Bild wird sofort heruntergeladen.

Verwenden Sie abschließend den folgenden Befehl, um alle lokalen Spiegel anzuzeigen:

docker images
Nach dem Login kopieren

Wenn der Download abgeschlossen ist, sollten Sie Folgendes sehen:

repository tag image id created virtual size
docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 mb

如果看到以上输出,说明您可以使用“docker.cn/docker/centos”这个镜像了,或将其称为仓库(repository),该镜像有一个名为“centos6”的标签(tag),此外还有一个名为“25c5298b1a36 ”的镜像 id(可能您所看到的镜像 id 与此处的不一致,那是正常现象,因为这个数字是随机生成的)。此外,我们可以看到该镜像只有 215.8 mb,非常小巧,而不像虚拟机的镜像文件那样庞大。

现在镜像已经有了,我们下面就需要使用该镜像,来启动容器。

启动容器

容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢?

只需使用以下命令即可启动容器:

docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
Nach dem Login kopieren

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:

docker run <相关参数> <镜像 id> <初始命令>

其中,相关参数包括:

  • -i:表示以“交互模式”运行容器

  • -t:表示容器启动后会进入其命令行

  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。

需要说明的是,不一定要使用“镜像 id”,也可以使用“仓库名:标签名”,例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。

安装相关软件

为了搭建 java web 运行环境,我们需要安装 jdk 与 tomcat,下面的过程均在容器内部进行。我们不妨选择/opt/目录作为安装目录,首先需要通过cd /opt/命令进入该目录。

安装 jdk()

首先,解压 jdk 程序包:

tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -c .
Nach dem Login kopieren

然后,重命名 jdk 目录:

mv jdk1.7.0_67/ jdk/
Nach dem Login kopieren

安装 tomcat

首先,解压 tomcat 程序包:

tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -c .
Nach dem Login kopieren

然后,重命名 tomcat 目录:

mv apache-tomcat-7.0.55/ tomcat/
Nach dem Login kopieren

设置环境变量

首先,编辑.bashrc文件

vi ~/.bashrc
Nach dem Login kopieren

然后,在该文件末尾添加如下配置:

export java_home=/opt/jdk
export path=$path:$java_home
Nach dem Login kopieren

最后,需要使用source命令,让环境变量生效:

source ~/.bashrc
Nach dem Login kopieren

编写运行脚本

我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 tomcat,具体过程如下:

首先,创建运行脚本:

vi /root/run.sh
Nach dem Login kopieren

然后,编辑脚本内容如下:

#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run
Nach dem Login kopieren

注意:这里必须先加载环境变量,然后使用 tomcat 的运行脚本来启动 tomcat 服务。

最后,为运行脚本添加执行权限:

chmod u+x /root/run.sh
Nach dem Login kopieren

退出容器

当以上步骤全部完成后,可使用exit命令,退出容器。

随后,可使用如下命令查看正在运行的容器:

docker ps
Nach dem Login kopieren

此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:

docker ps -a
Nach dem Login kopieren

输出如下内容:

container id image command created status ports names
57c312bbaad1 docker.cn/docker/centos:centos6 "/bin/bash" 27 minutes ago exited (0) 19 seconds ago naughty_goldstine

记住以上container id(容器 id),随后我们将通过该容器,创建一个可运行 java web 的镜像。

创建 java web 镜像

使用以下命令,根据某个“容器 id”来创建一个新的“镜像”:

docker commit 57c312bbaad1 huangyong/javaweb:0.1
Nach dem Login kopieren

该容器的 id 是“57c312bbaad1”,所创建的镜像名是“huangyong/javaweb:0.1”,随后可使用镜像来启动 java web 容器。

启动 java web 容器

有必要首先使用docker images命令,查看当前所有的镜像:

repository tag image id created virtual size
huangyong/javaweb 0.1 fc826a4706af 38 seconds ago 562.8 mb
docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 mb

可见,此时已经看到了最新创建的镜像“huangyong/javaweb:0.1”,其镜像 id 是“fc826a4706af”。正如上面所描述的那样,我们可以通过“镜像名”或“镜像 id”来启动容器,与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 tomcat 服务。此时,需要使用以下命令:

docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
Nach dem Login kopieren

稍作解释:

  • -d:表示以“守护模式”执行/root/run.sh脚本,此时 tomcat 控制台不会出现在输出终端上。

  • -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 docker 网桥来访问容器内部的 8080 端口了。

  • --name:表示容器名称,用一个有意义的名称命名即可。

关于 docker 网桥的内容,需要补充说明一下。实际上 docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 ip 地址与端口号来映射容器内部的 ip 地址与端口号,

在一系列参数后面的是“镜像名”或“镜像 id”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 tomcat 服务的命令。

当运行以上命令后,会立即输出一长串“容器 id”,我们可通过docker ps命令来查看当前正在运行的容器。

container id        image                   command             created             status              ports                     names
82f47923f926  huangyong/javaweb:0.1   "/root/run.sh"  4 seconds ago     up 3 seconds      0.0.0.0:58080->8080/tcp   javaweb

Das obige ist der detaillierte Inhalt vonDocker erstellt eine Beispielanalyse für eine Java-Web-Laufumgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage