Heim  >  Artikel  >  Java  >  So erstellen Sie mit Docker eine Java-Web-Laufumgebung

So erstellen Sie mit Docker eine Java-Web-Laufumgebung

WBOY
WBOYnach vorne
2023-05-01 11:13:141044Durchsuche

Was macht Docker?

Docker ist eine fortschrittliche Container-Engine, die auf einem Linux-Container (lxc-linux-Container) basiert und auf der Grundlage der Go-Sprache entwickelt wurde.

Der Quellcode wird auf Github gehostet und ist Open Source in Übereinstimmung mit dem Apache2.0-Protokoll. Das Ziel von Docker ist die Implementierung einer leichtgewichtigen Betriebssystemvirtualisierungslösung.

Um Docker zu lernen, müssen Sie zunächst einige Konzepte verstehen:

Image – Dockers Image ähnelt einem gängigen System-ISO-Image und enthält Anwendungsinformationen;

Container – ein Container entspricht einer virtuellen Maschine, die sein kann ausgeführt. Die Anwendung wird im Container ausgeführt, und Docker wird auf „Docker“ ausgeführt.

Lager – Das Lager ist ein Ort, an dem Bilder gespeichert werden. Es verfügt über eine Versionskontrolle, die der von Git ähnelt, und ist ebenfalls in zwei Formen unterteilt: öffentliches Lager ( öffentlich) und privates Warehouse (privat) ;

Docker unterstützt die meisten Linux-Distributionen. Durch die Verwendung von Docker-Containern können Sie Ihre eigenen Anwendungen auf verschiedenen Betriebssystemen und

verschiedenen Maschinen ausführen, ohne sich um die Konfiguration von Hardware, Betriebsumgebung usw. kümmern zu müssen. usw. Die Migration wird sehr einfach.

> Vergleich zwischen Docker und herkömmlicher Virtualisierungstechnologie

Im Vergleich zur herkömmlichen virtuellen Maschinentechnologie beansprucht Docker weniger Ressourcen und startet schneller, was die Projektbereitstellung sowie den Betrieb und die Wartung erheblich erleichtert.

Docker implementiert die Virtualisierung auf Betriebssystemebene und verwendet das Betriebssystem des lokalen Hosts wieder. Die traditionelle Methode besteht darin, mehrere Betriebssysteme basierend auf der Hardware zu virtualisieren und dann verwandte Anwendungen auf dem System bereitzustellen.

Das folgende Bild bezieht sich auf den entsprechenden Blog-Beitrag, der den Unterschied zwischen traditionellen Virtualisierungstechnologien wie Docker und VM anschaulich veranschaulicht:

如何使用Docker搭建Java Web运行环境vs如何使用Docker搭建Java Web运行环境

>Aufbau einer Docker-Umgebung

Ich verwende Ubuntu 14.04 , installieren Sie den Docker-Dienst darauf.

Docker schnell installieren

Das Ubuntu-Repository der Version 14.04 unterstützt bereits die Installation von Docker.
Sie können die Schnellinstallationsmethode verwenden,

sudo apt-get update
sudo apt-get install docker.io

Dienste und Daemons starten

service docker.io status
service docker.io start

Diese Installationsmethode ist normalerweise nicht die neueste Version der Docker-Version,

Wenn Sie die neueste Version installieren möchten, können Sie sie auf der offiziellen Docker-Website herunterladen und installieren.

> Erstellen Sie das erste Docker-Image

Der allgemeine Prozess zum Erstellen eines Docker-Images besteht darin, zunächst einen Container zu erstellen, das Image im Container zu ändern, zugehörige Umgebungen zu konfigurieren usw. und schließlich die Änderungen als zu übermitteln neues Bild.

(1) Laden Sie die Bilddatei herunter.

Laden Sie das System herunter, mit dem das Bild erstellt wurde.

sudo docker pull index.alauda.cn/alauda/ubuntu

如何使用Docker搭建Java Web运行环境
Hier habe ich es aus dem Bildzentrum von Lingqueyun gezogen.

Oder Sie können es direkt aus dem Docker-Image-Center abrufen, aber es scheint sehr langsam zu sein:

sudo docker pull ubuntu

Nachdem der Download erfolgreich war, verwenden Sie den Befehl „images“, um die lokale Image-Liste anzuzeigen:

docker images

如何使用Docker搭建Java Web运行环境Bitte hier beachten Fügen Sie sudo hinzu, wenn Sie Docker verwenden.

Nachdem Docker standardmäßig installiert ist, müssen Sie den sudo-Befehl jedes Mal ausführen, wenn Sie sudo ausführen. Wenn Sie sudo nicht befolgen, werden bei der direkten Ausführung des Docker-Befehls einige Berechtigungsfehler gemeldet.

(2) Starten Sie den Container und ändern Sie das Image.

Nachdem das Image lokal heruntergeladen wurde, können Sie es mit Docker ausführen.

Starten Sie den Container über die folgenden Befehlsparameter:

Docker-Ausführung d5a6a8e223c81f209561b28cf4294ed9 637d4a8d45be3cc2206ad4642f88f313

-i: Zeigt an, dass der Container nach dem Start in seine Befehlszeile wechselt

- v: Gibt an, welches lokale Verzeichnis gemountet werden muss. In den Container laden,

Format: -v cbee2784cd6273fb6b5c9e78e47c9031:5f604dc0858892e661d076e6fa7fdc66

Meine zugehörigen Programme befinden sich alle im Verzeichnis /data/software/ des aktuelle Maschine, und ich möchte es in das gleiche Verzeichnis des Containers laden:

sudo docker run -i -t -v /data/software/:/data/software/ ae983d5e88ce /bin/bash

„Image-ID“, Sie können auch „Warehouse-Name: Tag-Name“ verwenden, zum Beispiel: index.alauda.cn/alauda/ubuntu :letzte.

Der obige Befehl kann das angegebene Image verwenden, um eine Shell auszuführen. Wenn Sie das Terminal verlassen möchten, können Sie den Exit-Befehl verwenden oder nacheinander Strg -p + Strg -q drücken, um zum Host-Computer zu wechseln. Allerdings läuft der Container auf diese Weise auch übermorgen noch.

Nach dem Starten des Terminals geben Sie das Verzeichnis /data/software/ ein. Sie können feststellen, dass die Dateien im aktuellen Maschinenverzeichnis synchronisiert wurden:

如何使用Docker搭建Java Web运行环境 (3) Installieren Sie JDK und Tomcat usw.


Installieren Verwandte JDK- und andere Programme finden Sie hier. Installieren Sie alles im Verzeichnis /data/:

tar -zxvf jdk-7u25-linux-x64.tar.gz -c /data/
mv jdk1.7.0_25 jdk

unzip apache-tomcat-7.0.54.zip -d /data/
mv apache-tomcat-7.0.54 tomcat

Konfigurieren Sie Umgebungsvariablen

vi /etc/profile

Fügen Sie die folgende Konfiguration hinzu:

#set java environment  
export java_home=/data/jdk  
export jre_home=${java_home}/jre  
export classpath=.:javahome/lib:javahome/lib:{jre_home}/lib  
export path=javahome/bin:javahome/bin:path 

export catalina_home=/data/tomcat 
export catalina_base=/data/tomcat

Speichern und beenden, die Einstellungen werden sofort wirksam:

Quelle /etc/ Profil

(4) Startup-Skript schreiben

启动tomcat时必须通过tomcathome/bin/catalina.sh实现,不能使用tomcathome/bin/catalina.sh实现,不能使用tomcat_home/bin/startup.sh启动,否则脚本执行后容器会马上退出。

vi /data/start.sh

添加以下内容:

#!/bin/bash
# export environment variable
source /etc/profile
# start tomcat
bash /data/tomcat/bin/catalina.sh run

添加可执行权限:chmod u+x /data/start.sh

(5)构建镜像

使用docker构建镜像的两种方法:

使用docker commit 命令,更直观一些;

使用docker build命令和dockerfile文件,可以模板化镜像构建过程;

这里使用docker commit的方式创建镜像。

查看容器列表:

sudo docker ps -a
container id image command created status ports names
39b2cf60a4c1 ae983d5e88ce:latest "/bin/bash" 5 hours ago exited (0) 9 seconds ago dreamy_euclid

提交一个新的镜像:

sudo docker commit 39b2cf60a4c1 bingyue/docdemo

如果有docker账号,可以将镜像推送到docker hub或资金的私有registry中。

现在查看本地的docker镜像,

sudo docker images

如何使用Docker搭建Java Web运行环境

可以看到本地仓库已经有刚刚创建的docker镜像。

repository tag image id created virtual size
bingyue/docdemo latest bfc7ed316d42 about a minute ago 528.2 mb
index.alauda.cn/alauda/ubuntu latest ae983d5e88ce 10 months ago 255.1 mb

docker inspect可以查看新创建的镜像的详细信息:

sudo docker inspect bingyue/docdemo如何使用Docker搭建Java Web运行环境

(6)运行新创建的镜像

docker run -d -p 18080:8080 --name docdemo bingyue/docdemo /data/start.sh

-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口,

这样就向外界暴露了 18080 端口,可通过 docker 网桥来访问容器内部的 8080 端口了。

查看后台是否启动成功:

docker ps

测试访问:如何使用Docker搭建Java Web运行环境

(7)提交至docker仓库

如果有docker仓库的账户,可以将本地创建的镜像提交至仓库。

 >使用体验

到这一步,差不多完成了docker的初体验,docker应用还是比较简单的,真正复杂的应该是背后的虚拟化技术。

一步一步部署下来,的确docker相比传统的虚拟机技术要简单了很多,有机会继续深入学习。

附:添加docker用户组,避免sudo输入

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,影响效率。如果不跟 sudo,直接执行 docker images 命令会有如下问题:
get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. are you trying to connect to a tls-enabled daemon without tls?

把当前用户执行权限添加到相应的docker用户组里面就可以解决这个问题。

添加一个新的docker用户组

sudo groupadd docker

# 添加当前用户到docker用户组里

sudo gpasswd -a bingyue docker

# 重启docker后台监护进程

sudo service docker restart

# 重启之后,尝试一下,是否生效

docker version

#若还未生效,则系统重启,则生效

sudo reboot

docker常用命令

# 下载一个ubuntu镜像

sudo docker pull ubuntu

# 使用ubuntu运行一个交互性的shell

sudo docker run -i -t ubuntu /bin/bash

#docker ps命令

sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container

#port命令

docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口

#删除容器命令

sudo docker rm `sudo docker ps -a -q`#删除所有容器
sudo docker rm $container_id#删除容器id为container_id的容器

#其他命令快速参考:

sudo docker images #查看本地镜像
sudo docker attach $container_id #启动一个已存在的docker实例
sudo docker stop $container_id #停止docker实例
sudo docker logs $container_id #查看docker实例运行日志,确保正常运行
sudo docker inspect $container_id #查看container的实例属性,比如ip等等

Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Docker eine Java-Web-Laufumgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen