Rumah  >  Artikel  >  Java  >  Docker membina analisis contoh persekitaran berjalan Java Web

Docker membina analisis contoh persekitaran berjalan Java Web

王林
王林ke hadapan
2023-04-25 08:49:061094semak imbas

Mari kita semak semula seni bina teknologi maya tradisional:
Docker搭建Java Web运行环境实例分析

Dapat dilihat bahawa kita boleh memasang berbilang mesin maya pada sistem pengendalian hos, dan dalam setiap Dalam mesin maya, sistem pengendalian maya dilaksanakan melalui teknologi virtualisasi Kemudian, anda boleh memasang aplikasi yang anda perlukan pada sistem pengendalian maya. Semua ini kelihatan sangat mudah, tetapi butiran teknikalnya agak misteri, malah orang yang hebat mungkin tidak dapat menjelaskannya dengan jelas.

Sesiapa yang telah menggunakan mesin maya harus tahu bahawa memulakan mesin maya adalah seperti memulakan komputer Proses inisialisasinya agak lambat Kita perlu menunggu lama sebelum kita dapat melihat antara muka log masuk. Setelah mesin maya dimulakan, sambungan rangkaian boleh diwujudkan dengan hos untuk memastikan mesin maya dan hos saling bersambung. Mesin maya yang berbeza diasingkan antara satu sama lain Maksudnya, setiap mesin maya tidak mengetahui kewujudan yang lain, tetapi setiap mesin maya menduduki sumber perkakasan dan rangkaian mesin hos.

Mari kita bandingkan seni bina teknologi docker:
Docker搭建Java Web运行环境实例分析

Dapat dilihat pada sistem pengendalian hos, terdapat perkhidmatan docker yang sedang berjalan (atau dipanggil "docker engine" ), pada perkhidmatan ini, kami boleh membuka berbilang bekas docker, dan setiap bekas docker boleh menjalankan aplikasinya sendiri yang diperlukan juga diasingkan daripada satu sama lain.

Berbanding dengan mesin maya, bekas docker adalah berbeza sama sekali dari segi pelaksanaan teknikal Kepantasan permulaan adalah lonjakan yang penting berbanding dengan mesin maya hanya memerlukan sekelip mata. Sama ada mesin maya atau bekas docker, ia direka untuk mengasingkan persekitaran aplikasi yang sedang berjalan, menjimatkan sumber perkakasan kami dan memberikan faedah kepada pembangun kami.

Prasyarat

Pertama, anda perlu menyediakan sistem pengendalian centos, atau mesin maya. Ringkasnya, anda boleh mengakses sistem pengendalian centos melalui alat klien Linux.

Perlu diingatkan bahawa ubuntu atau sistem pengendalian Linux lain juga boleh memainkan docker, tetapi artikel ini memilih untuk menggunakan centos sebagai contoh, itu sahaja.

Keperluan khusus untuk centos adalah seperti berikut:

  • Mestilah sistem pengendalian 64-bit

  • Ia disyorkan bahawa kernel berada di atas 3.8

Semak kernel centos anda melalui arahan berikut:

uname -r

Jika selepas melaksanakan arahan di atas, versi kernel output nombor lebih rendah daripada 3.8, sila rujuk kaedah berikut untuk menaik taraf kernel linux anda.

Untuk centos 6.5, versi kernel lalai ialah 2.6. Mula-mula, anda boleh memasang kernel terkini melalui arahan berikut:

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

Kemudian, edit fail konfigurasi berikut:

vi /etc/grub.conf

Tukar lalai=1 kepada lalai=0.

Akhir sekali, mulakan semula sistem pengendalian melalui arahan but semula.

Jika tiada masalah selepas dimulakan semula, semak semula kernel centos anda akan dipaparkan sebagai 3.10.

Jika anda sampai di sini, hasil yang anda jangkakan adalah konsisten dengan hasil kami. tahniah! Mari kita pasang docker bersama-sama.

Pasang docker

Hanya jalankan arahan berikut untuk memasang perisian docker:

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

Anda boleh menggunakan arahan berikut untuk menyemak sama ada docker adalah berjaya dipasang :

docker version

Jika nombor versi docker adalah output, ini bermakna pemasangan berjaya, dan kita boleh mula menggunakan docker.

Anda boleh memulakan perkhidmatan docker melalui arahan berikut:

service docker start

Bagaimana untuk melakukannya

Sama seperti memasang perisian, kita perlu mempunyai CD terlebih dahulu dengan perisian dibakar padanya Jika Jika anda menggunakan pemacu optik maya, anda perlu menjalankan fail yang dipanggil "imej" untuk memasang perisian. Dalam dunia buruh pelabuhan, terdapat juga sesuatu yang dipanggil "cermin". Sistem pengendalian yang kami perlukan telah dipasang.

Maka persoalannya, di manakah kita boleh memuat turun imej itu?

Tapak web rasmi Docker sememangnya telah menyediakan semua alamat muat turun imej, tetapi malangnya ia tidak boleh diakses di China. Nasib baik, orang yang baik hati di China telah menyediakan tapak web Cina buruh pelabuhan, di mana kami boleh memuat turun imej buruh pelabuhan yang kami perlukan.

Muat turun imej

Kami juga mungkin mengambil centos sebagai contoh dan memuat turun imej centos melalui langkah berikut.

Pertama, lawati laman web Cina buruh pelabuhan dan cari imej bernama "centos" pada halaman utama Dalam hasil carian, terdapat "imej rasmi", yang merupakan apa yang kita perlukan.

Kemudian, masukkan halaman imej rasmi centos Dalam kotak input "tarik repositori ini", terdapat arahan Salin, jalankan arahan pada baris arahan anda sendiri, dan imej akan dimuat turun dengan serta-merta.

Akhir sekali, gunakan arahan berikut untuk melihat semua cermin setempat:

docker images

Apabila muat turun selesai, anda seharusnya melihat:

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

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

docker run d19f8014cc3f15ade43d257ddea0656b f3dfa9fefe3bae6ff36b7b06d3e8f83d 3d4cf205922e720f1300c6fabbc54968

其中,相关参数包括:

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

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

  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v 8ce10f688b9fc68001d4d76abd8c096f:e9b05d94fa020ff91f624b5ff5a7f4db

假设我们的所有安装程序都放在了宿主机的/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 .

然后,重命名 jdk 目录:

mv jdk1.7.0_67/ jdk/

安装 tomcat

首先,解压 tomcat 程序包:

tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -c .

然后,重命名 tomcat 目录:

mv apache-tomcat-7.0.55/ tomcat/

设置环境变量

首先,编辑.bashrc文件

vi ~/.bashrc

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

export java_home=/opt/jdk
export path=$path:$java_home

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

source ~/.bashrc

编写运行脚本

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

首先,创建运行脚本:

vi /root/run.sh

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

#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

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

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

chmod u+x /root/run.sh

退出容器

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

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

docker ps

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

docker ps -a

输出如下内容:

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

该容器的 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

稍作解释:

  • -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

Atas ialah kandungan terperinci Docker membina analisis contoh persekitaran berjalan Java Web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam