国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 講解使用Docker搭建Java Web運行環境

講解使用Docker搭建Java Web運行環境

2020-12-16 20:35黃勇 服務器知識

本篇文章詳細的介紹了使用Docker搭建Java Web運行環境,想要學習docker的同學可以了解一下。

docker 是一種“輕量級”容器技術,它幾乎動搖了傳統虛擬化技術的地位,現在國內外已經有越來越多的公司開始逐步使用 docker 來替換現有的虛擬化平臺了。作為一名 java 程序員,我們是時候一起把 docker 學起來了!

本文會對虛擬化技術與 docker 容器技術做一個對比,然后引出一些 docker 的名詞術語,比如:容器、鏡像等,隨后將使用 docker 搭建一個 java web 運行環境,最后將對本文做一個總結。

我們先來回顧一下傳統虛擬化技術的體系架構:
講解使用Docker搭建Java Web運行環境

可見,我們在宿主機的操作系統上,可安裝了多個虛擬機,而在每個虛擬機中,通過虛擬化技術,實現了一個虛擬操作系統,隨后,就可以在該虛擬操作系統上,安裝自己所需的應用程序了。這一切看似非常簡單,但其中的技術細節是相當高深莫測的,大神級人物都不一定說得清楚。

凡是使用過虛擬機的同學,應該都知道,啟動虛擬機就像啟動一臺計算機,初始化過程是相當慢的,我們需要等很久,才能看到登錄界面。一旦虛擬機啟動以后,就可以與宿主機建立網絡連接,確保虛擬機與宿主機之間是互聯互通的。不同的虛擬機之間卻是相互隔離的,也就是說,彼此并不知道對方的存在,但每個虛擬機占用的都是宿主機的硬件與網絡資源。

我們再來對比一下 docker 技術的體系架構吧:
講解使用Docker搭建Java Web運行環境

可見,在宿主機的操作系統上,有一個 docker 服務在運行(或者稱為“docker 引擎”),在此服務上,我們可開啟多個 docker 容器,而每個 docker 容器中可運行自己所需的應用程序,docker 容器之間也是相互隔離的,同樣地,都是占用的宿主機的硬件與網絡資源。

docker 容器相對于虛擬機而言,除了在技術實現上完全不一樣以外,啟動速度較虛擬機而言有本質的飛躍,啟動一個容器只在眨眼瞬間。不管是虛擬機還是 docker 容器,它們都是為了隔離應用程序的運行環境,節省我們的硬件資源,為我們開發人員提供福利。

需要強調的是,筆者并非否定虛擬化技術,而是想通過本文讓更多的讀者了解如何使用 docker 技術,讓大家知道除了虛擬化技術以外,還有另一種替代技術,也能讓應用程序隔離起來。

下面,我們將結合一個 java web 應用的部署過程,來描述如何“烹飪”docker 這份美味佳肴。您準備好了嗎?我們現在就開始!

原料

前提條件

首先,您要準備一個 centos 的操作系統,虛擬機也行??傊?,可以通過 linux 客戶端工具訪問到 centos 操作系統就行。

需要說明的是,ubuntu 或其它 linux 操作系統也能玩 docker,只不過本文選擇了以 centos 為例,僅此而已。

centos 具體要求如下:

  • 必須是 64 位操作系統
  • 建議內核在 3.8 以上

通過以下命令查看您的 centos 內核:

?
1
uname -r

如果執行以上命令后,輸出的內核版本號低于 3.8,請參考下面的方法來來升級您的 linux 內核。

對于 centos 6.5 而言,內核版本默認是 2.6。首先,可通過以下命令安裝最新內核:

?
1
2
3
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

隨后,編輯以下配置文件:

?
1
vi /etc/grub.conf

將default=1修改為default=0。

最后,通過reboot命令重啟操作系統。

重啟后如果不出意外的話,再次查看內核,您的 centos 內核將會顯示為 3.10。

如果到這里,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 docker 了。

安裝 docker

只需通過以下命令即可安裝 docker 軟件:

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

可使用以下命令,查看 docker 是否安裝成功:

?
1
docker version

若輸出了 docker 的版本號,則說明安裝成功,我們下面就可以開始使用 docker 了。

可通過以下命令啟動 docker 服務:

?
1
service docker start

做法

就像曾經安裝軟件一樣,我們首先需要有一張刻錄了該軟件的光盤,如果您使用的是虛擬光驅,那么就需要運行一種名為“鏡像”的文件,通過它來安裝軟件。在 docker 的世界里,也有一個名為“鏡像”的東西,已經安裝我們所需的操作系統,我們一般成為“docker 鏡像”,本文簡稱“鏡像”。

那么問題來了,我們從哪里下載鏡像呢?

docker官網 確實已經提供了所有的鏡像下載地址,可惜在國內卻是無法訪問的。幸好國內好心人提供了一個 docker 中文網,在該網站上可以下載我們所需的 docker 鏡像。

下載鏡像

我們不妨還是以 centos 為例,通過以下步驟,下載一個 centos 的鏡像。

首先,訪問 docker 中文網,在首頁中搜索名為“centos”的鏡像,在搜索的結果中,有一個“官方鏡像”,它就是我們所需的。

然后,進入 centos 官方鏡像頁面,在“pull this repository”輸入框中,有一段命令,把它復制下來,在自己的命令行上運行該命令,隨后將立即下載該鏡像。

最后,使用以下命令查看本地所有的鏡像:

?
1
docker images

當下載完成后,您應該會看到:

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 與此處的不一致,那是正?,F象,因為這個數字是隨機生成的)。此外,我們可以看到該鏡像只有 215.8 mb,非常小巧,而不像虛擬機的鏡像文件那樣龐大。

現在鏡像已經有了,我們下面就需要使用該鏡像,來啟動容器。

啟動容器

容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。既然鏡像已經下載到本地,那么如何才能啟動容器呢?

只需使用以下命令即可啟動容器:

?
1
docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:

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 程序包:

?
1
tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -c .

然后,重命名 jdk 目錄:

?
1
mv jdk1.7.0_67/ jdk/

安裝 tomcat

首先,解壓 tomcat 程序包:

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

然后,重命名 tomcat 目錄:

?
1
mv apache-tomcat-7.0.55/ tomcat/

設置環境變量

首先,編輯.bashrc文件

?
1
vi ~/.bashrc

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

?
1
2
export java_home=/opt/jdk
export path=$path:$java_home

最后,需要使用source命令,讓環境變量生效:

?
1
source ~/.bashrc

編寫運行腳本

我們需要編寫一個運行腳本,當啟動容器時,運行該腳本,啟動 tomcat,具體過程如下:

首先,創建運行腳本:

?
1
vi /root/run.sh

然后,編輯腳本內容如下:

?
1
2
3
#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

注意:這里必須先加載環境變量,然后使用 tomcat 的運行腳本來啟動 tomcat 服務。

最后,為運行腳本添加執行權限:

?
1
chmod u+x /root/run.sh

退出容器

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

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

?
1
docker ps

此時,您應該看不到任何正在運行的程序,因為剛才已經使用exit命令退出的容器,此時容器處于停止狀態,可使用如下命令查看所有容器:

?
1
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”來創建一個新的“鏡像”:

?
1
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 服務。此時,需要使用以下命令:

?
1
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

品嘗

在瀏覽器中,輸入以下地址,即可訪問 tomcat 首頁:

http://192.168.65.132:58080/

注意:這里使用的是宿主機的 ip 地址,與對外暴露的端口號 58080,它映射容器內部的端口號 8080。

總結

通過本文,我們了解了 docker 是什么?它與虛擬機的差別在哪里?以及如何安裝 docker?如何下載 docker 鏡像?如何運行 docker 容器?如何在容器內安裝應用程序?如何在容器上創建鏡像?如何以服務的方式啟動容器?這一切看似簡單,但操作也是相當繁瑣的,不過熟能生巧,需要我們不斷地操練。

除了這種手工生成 docker 鏡像的方式以外,還有一種更像是寫代碼一樣,可以自動地創建 docker 鏡像的方式。只需要我們編寫一個 dockerfile 文件,隨后使用docker build命令即可完成以上所有的手工操作。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天天操一操 | 国产免费一区二区 | 亚洲第一免费播放区 | 九九只有精品 | 久久久久在线 | 午夜成人在线视频 | 日本中文在线视频 | 国产高潮失禁喷水爽网站 | 日韩欧美视频 | 亚洲精品久久久一区二区三区 | 国产精品精品 | 男女视频在线 | 日韩成人在线免费观看 | 欧美综合第一页 | 色综合久久久久 | 国产精品99久久久久久www | 亚洲精品视频一区二区三区 | 青草福利| 久久综合av | 亚洲精品乱码久久久久久蜜糖图片 | 在线免费观看色视频 | 久久精品国产一区二区三区不卡 | 亚洲色图p| 国产精品成人观看视频国产奇米 | 亚洲免费视频一区 | 国产成人精品久久二区二区91 | 国产福利91精品一区二区 | 日本天天操 | 天堂99x99es久久精品免费 | 国产福利91精品一区二区三区 | 久久99这里只有精品 | 日韩一区二区三区在线观看 | 97精品在线 | 日本久久综合 | 亚洲综合无码一区二区 | 国产精品久久久久久久久久新婚 | 热久久国产 | 国产91在线播放 | 久久中文字幕一区二区三区 | 九九九色 | www.青青草|