Rumah  >  Artikel  >  Java  >  Cara menggunakan Docker untuk membina persekitaran berjalan Web Java

Cara menggunakan Docker untuk membina persekitaran berjalan Web Java

WBOY
WBOYke hadapan
2023-05-01 11:13:141082semak imbas

Apakah yang dilakukan oleh docker?

Docker ialah enjin kontena termaju berdasarkan bekas linux (kontena lxc-linux), dibangunkan berdasarkan bahasa go,

Kod sumber dihoskan pada github dan sumber terbuka dengan mematuhi perjanjian apache2.0. Matlamat docker adalah untuk melaksanakan penyelesaian virtualisasi sistem pengendalian yang ringan.

Untuk mempelajari docker, anda mesti memahami beberapa konsep dahulu:

Imej—Imej Docker adalah serupa dengan imej ISO sistem biasa dan mengandungi maklumat aplikasi;

Kontena - Bekas adalah bersamaan dengan mesin maya yang boleh dijalankan Aplikasi berjalan dalam bekas dan docker berjalan pada "docker"; serupa dengan git Kawalan versi juga dibahagikan kepada dua bentuk: gudang awam (awam) dan gudang persendirian (swasta);

Docker menyokong kebanyakan pengedaran Linux, anda boleh menjalankan sistem pengendalian yang berbeza.

Jalankan aplikasi anda sendiri pada mesin yang berbeza tanpa perlu risau tentang perkakasan, persekitaran operasi dan konfigurasi lain Perpindahan aplikasi menjadi sangat mudah.

> Perbandingan antara docker dan teknologi virtualisasi tradisional

Berbanding dengan teknologi mesin maya tradisional, docker menggunakan lebih sedikit sumber, bermula dengan lebih pantas dan sangat besar. penempatan dan operasi dan penyelenggaraan projek.

Docker melaksanakan virtualisasi pada peringkat sistem pengendalian dan menggunakan semula sistem pengendalian hos tempatan Kaedah tradisional adalah untuk memayakan berbilang sistem pengendalian berdasarkan perkakasan dan kemudian menggunakan aplikasi yang berkaitan.

Gambar di bawah merujuk kepada catatan blog yang berkaitan, yang dengan jelas menggambarkan perbezaan antara teknologi maya tradisional seperti docker dan vm:

vs

如何使用Docker搭建Java Web运行环境 如何使用Docker搭建Java Web运行环境 >Bina persekitaran docker

Saya menggunakan ubuntu 14.04 dan memasang perkhidmatan docker padanya.

Pemasangan pantas docker

Pemasangan docker sudah disokong dalam repositori ubuntu versi 14.04
Anda boleh menggunakan kaedah pemasangan pantas ,

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

Mulakan perkhidmatan dan daemon

service docker.io status
service docker.io start

Kaedah pemasangan ini biasanya bukan versi terkini docker

Jika anda ingin memasang versi terkini, anda boleh pergi ke laman web rasmi docker untuk memuat turun dan memasangnya.

>Buat imej docker pertama

Proses umum membina imej docker adalah dengan membuat bekas terlebih dahulu dan mengubah suai imej dalam bekas , dan konfigurasikan persekitaran yang berkaitan, dsb., dan akhirnya menyerahkan pengubahsuaian sebagai imej baharu.

(1) Muat turun fail imej

Muat turun sistem yang digunakan untuk membuat imej,

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

Di sini saya muat turun imej dari Tarik Pusat Lingqueyun.

如何使用Docker搭建Java Web运行环境Atau anda boleh menariknya terus dari pusat cermin docker, tetapi nampaknya sangat perlahan:

sudo docker pull ubuntu

Selepas muat turun berjaya, gunakan arahan imej untuk melihat senarai cermin setempat:

docker images

Perhatikan di sini, sila tambah sudo apabila menggunakan docker.

Selepas docker dipasang secara lalai, anda perlu menjalankan perintah sudo setiap kali anda melaksanakan docker Jika anda tidak mengikut sudo, melaksanakan secara langsung arahan docker akan melaporkan beberapa ralat kebenaran. 如何使用Docker搭建Java Web运行环境

(2) Mulakan bekas dan ubah suai imej

Selepas imej dimuat turun secara setempat, anda boleh menggunakan docker untuk menjalankannya,

Mulakan bekas melalui parameter arahan berikut,

larian docker a517bf63be8f0b39b1b65f47db1a020a cbbab25126fe7c04d074d4d1e4df89da

-i: dalam "mod interaktif"

-t: Menunjukkan bahawa baris arahan akan dimasukkan selepas bekas dimulakan

-v: Menunjukkan direktori setempat yang perlu. dipasang ke dalam bekas,

Format: -v 5e6ead73b09af1e0a0a585092fe4a41d:2ec51bf41dd040a0bc70b46c965130b3

Atur cara saya yang berkaitan semuanya ada dalam direktori /data/perisian/ mesin semasa, dan saya mahu melekapkannya Muatkan ke direktori bekas yang sama:

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

"ID Imej", anda juga boleh menggunakan "nama gudang: nama teg", contohnya: index.alauda.cn /alauda/ubuntu:terkini.

Arahan di atas boleh menggunakan imej yang ditentukan untuk menjalankan shell Jika anda ingin keluar dari terminal, anda boleh menggunakan arahan keluar, atau tekan ctrl -p + ctrl -q dalam urutan untuk bertukar kepada hos. mesin. Walau bagaimanapun, dengan cara ini, kontena masih berjalan lusa.

Selepas memulakan terminal, masukkan direktori /data/software/, anda boleh mendapati bahawa fail dalam direktori mesin semasa telah disegerakkan:

如何使用Docker搭建Java Web运行环境 (3) Pasang jdk dan tomcat, dsb.


Pasang jdk dan atur cara lain yang berkaitan, semuanya dipasang di sini ke direktori /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

Konfigurasikan pembolehubah persekitaran

vi /etc/profile

Tambah konfigurasi berikut:

#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

Simpan dan keluar, tetapan akan berkuat kuasa serta-merta:

sumber /etc/profile

(4) Tulis skrip permulaan

启动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等等

Atas ialah kandungan terperinci Cara menggunakan Docker untuk membina persekitaran berjalan Web Java. 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