亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

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

2024-09-01 13:48:53
字體:
來源:轉載
供稿:網友

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

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

我們先來回顧一下傳統虛擬化技術的體系架構:
docker搭建java,web,docker環境搭建,docker,運行tomcat

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

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

我們再來對比一下 Docker 技術的體系架構吧:
docker搭建java,web,docker環境搭建,docker,運行tomcat

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

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

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

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

原料

前提條件

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

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

CentOS 具體要求如下:

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

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

uname -r

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

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

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpmyum -y --enablerepo=elrepo-kernel install kernel-lt

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

vi /etc/grub.conf

將default=1修改為default=0。

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

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

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

安裝 Docker

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

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

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

docker version

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

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

service docker start

做法

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

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

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

下載鏡像

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

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

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

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

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

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

啟動容器

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

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

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

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/jdkexport PATH=$PATH:$JAVA_HOME

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

source ~/.bashrc

編寫運行腳本

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

首先,創建運行腳本:

vi /root/run.sh

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

#!/bin/bashsource ~/.bashrcsh /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

品嘗

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

http://192.168.65.132:58080/

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

總結

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品福利视频| 久久精品国产欧美亚洲人人爽| 欧美www视频在线观看| 欧美大人香蕉在线| 亚洲欧美www| 国产999精品久久久影片官网| 亚洲黄色片网站| 日韩亚洲精品电影| 亚洲精品久久久一区二区三区| 51久久精品夜色国产麻豆| 91tv亚洲精品香蕉国产一区7ujn| 最近2019中文字幕mv免费看| 538国产精品视频一区二区| 国产欧美一区二区三区在线看| 色妞一区二区三区| 久久精品国产成人精品| 91社影院在线观看| 亚洲女人天堂网| 色噜噜狠狠狠综合曰曰曰88av| 欧美不卡视频一区发布| 国产精品白嫩初高中害羞小美女| 国产z一区二区三区| 国产91精品不卡视频| 96sao精品视频在线观看| 亚洲午夜未满十八勿入免费观看全集| 久久国产精品首页| 中文一区二区视频| 亚洲国产精久久久久久| 国产精品美女免费| 亚洲免费av片| 国产亚洲欧洲高清一区| 成人亚洲欧美一区二区三区| 欧美一级视频一区二区| 欧美野外wwwxxx| 最新国产精品亚洲| 黑人巨大精品欧美一区免费视频| 国产精品视频网站| 91精品久久久久久久久青青| 欧美激情亚洲一区| 日韩成人中文字幕在线观看| 亚洲第一天堂无码专区| 日韩欧美在线免费| 久久av中文字幕| 一区二区日韩精品| 国产亚洲精品久久久久久777| 国产精品99久久久久久久久久久久| 日韩欧美国产激情| 国产精品一区久久久| 欧美日韩一区二区在线| 韩国三级电影久久久久久| 国产精品扒开腿做爽爽爽视频| 国产一区红桃视频| 精品久久久久久中文字幕| 精品无码久久久久久国产| 国产做受高潮69| 91精品久久久久久久久久另类| 国语自产偷拍精品视频偷| 中文字幕精品网| 亚洲欧美色图片| 中文字幕亚洲欧美| 精品国产欧美一区二区三区成人| 欧美大片在线免费观看| 久久久久久香蕉网| 91a在线视频| 一区二区成人精品| 九九久久国产精品| 亚洲人成电影在线播放| 欧美福利视频在线| 日韩av影片在线观看| 岛国av一区二区三区| 国产日韩欧美另类| 97精品久久久| 国产精品视频资源| 亚洲精品久久久一区二区三区| 国产色婷婷国产综合在线理论片a| 欧美性极品xxxx做受| 欧美精品电影在线| 欧美日韩国产一区二区| 久久久亚洲国产天美传媒修理工| 成人国产精品一区二区| 在线视频欧美日韩| 51ⅴ精品国产91久久久久久| 亚洲国产中文字幕在线观看| 久久亚洲成人精品| 国产美女精品免费电影| 日韩视频在线一区| 九色精品免费永久在线| 国产精品com| 亚洲精品国精品久久99热| 国产有码在线一区二区视频| 亚洲视频在线观看网站| 亚洲香蕉在线观看| 精品视频久久久久久久| 中文一区二区视频| 91香蕉嫩草神马影院在线观看| 色天天综合狠狠色| 欧美色道久久88综合亚洲精品| 成人性生交大片免费观看嘿嘿视频| 久久精品视频在线播放| 91色琪琪电影亚洲精品久久| 精品一区二区亚洲| 亚洲成人三级在线| 国产精品扒开腿做爽爽爽男男| 亚洲视频一区二区三区| 国产男人精品视频| 欧美www在线| 亚洲成人免费在线视频| 亚洲欧美一区二区三区久久| 国产91在线播放九色快色| 国产一区二区三区视频免费| 九九热视频这里只有精品| 久久免费少妇高潮久久精品99| 精品久久香蕉国产线看观看亚洲| 精品亚洲男同gayvideo网站| 日本国产精品视频| 亚洲第一黄色网| 欧美一区二区色| 亚洲午夜精品久久久久久性色| 精品女同一区二区三区在线播放| 91牛牛免费视频| 日韩中文字幕视频| 国产精品成人免费电影| 欧美极品欧美精品欧美视频| 91po在线观看91精品国产性色| 亚洲欧美国产高清va在线播| 欧美精品免费播放| 一区二区三区日韩在线| 精品国内产的精品视频在线观看| 色综合伊人色综合网| 中文字幕亚洲天堂| 岛国精品视频在线播放| 亚洲精品福利免费在线观看| 国产不卡精品视男人的天堂| 日韩最新中文字幕电影免费看| 欧美成人午夜激情视频| 欧美日在线观看| 日韩精品亚洲元码| 中文字幕日韩精品在线| 亚洲国产精品久久久久久| 亚洲人a成www在线影院| 亚洲欧美在线一区| 欧美中文字幕在线播放| 欧美中文在线观看国产| 欧美性猛交xxxx黑人猛交| 57pao国产成人免费| 中文字幕亚洲欧美一区二区三区| 成人免费网站在线看| 理论片在线不卡免费观看| 国产成人极品视频| 91免费电影网站| 日本中文字幕久久看| 在线观看日韩专区| 91在线免费网站| 久久中文字幕在线视频| 欧洲日本亚洲国产区| 久久精品国产免费观看| 欧美激情2020午夜免费观看| 91中文在线观看| 精品久久久久久久久久| 精品久久久在线观看| 国产精品久久久久久久7电影| 亚洲乱码国产乱码精品精| 亚洲直播在线一区| 九九精品视频在线观看|