多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > 使用 Docker 搭建 Java Web 運行環境

使用 Docker 搭建 Java Web 運行環境

來源:程序員人生   發布時間:2016-06-15 08:13:39 閱讀次數:4624次

Docker 是 2014 年最為火爆的技術之1,幾近所有的程序員都聽說過它。Docker 是1種“輕量級”容器技術,它幾近動搖了傳統虛擬化技術的地位,現在國內外已有愈來愈多的公司開始逐漸使用 Docker 來替換現有的虛擬化平臺了。作為1名 Java 程序員,我們是時候1起把 Docker 學起來了!

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

我們先來回顧1下傳統虛擬化技術的體系架構:

虛擬化技術

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

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

我們再來對照1下 Docker 技術的體系架構吧:

Docker 技術

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

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

我們再來看看 Docker 的 Logo 吧:

Docker Logo

很明顯,這是1只鯨魚,它托著許多集裝箱。我們可以把宿主機可當作這只鯨魚,把相互隔離的容器可看成集裝箱,每一個集裝箱中都包括自己的利用程序。這 Logo 簡直的太形象了!

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

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

原料

條件條件

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

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

CentOS 具體要求以下:

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

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

uname -r

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

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

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -ivh http://www.elrepo.org/elrepo-release⑹⑸.el6.elrepo.noarch.rpm yum -y --enablerepo=elrepo-kernel install kernel-lt

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

vi /etc/grub.conf

default=1修改成default=0

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

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

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

安裝 Docker

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

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

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

docker version

若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:

service docker start

1旦 Docker 服務啟動終了,我們下面就能夠開始使用 Docker 了。

做法

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

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

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

下載鏡像

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

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

然后,進入 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),該鏡像有1個名為“centos6”的標簽(Tag),另外還有1個名為“25c5298b1a36 ”的鏡像 ID(可能您所看到的鏡像 ID 與此處的不1致,那是正常現象,由于這個數字是隨機生成的)。另外,我們可以看到該鏡像只有 215.8 MB,非常小巧,而不像虛擬機的鏡像文件那樣龐大。

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

啟動容器

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

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

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

這條命令比較長,我們略微分解1下,其實包括以下3個部份:

docker run <相干參數> <鏡像 ID> <初始命令>

其中,相干參數包括:

  • -i:表示以“交互模式”運行容器
  • -t:表示容器啟動后會進入其命令行
  • -v:表示需要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

假定我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。

需要說明的是,不1定要使用“鏡像 ID”,也能夠使用“倉庫名:標簽名”,例如:docker.cn/docker/centos:centos6。

初始命令表示1旦容器啟動,需要運行的命令,此時使用“/bin/bash”,表示甚么也不做,只需進入命令行便可。

安裝相干軟件

為了搭建 Java Web 運行環境,我們需要安裝 JDK 與 Tomcat,下面的進程均在容器內部進行。我們無妨選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。

安裝 JDK

首先,解壓 JDK 程序包:

tar -zxf /mnt/software/jdk⑺u67-linux-x64.tar.gz -C .

然后,重命名 JDK 目錄:

mv jdk1.7.0_67/ jdk/

安裝 Tomcat

首先,解壓 Tomcat 程序包:

tar -zxf /mnt/software/apache-tomcat⑺.0.55.tar.gz -C .

然后,重命名 Tomcat 目錄:

mv apache-tomcat⑺.0.55/ tomcat/

設置環境變量

首先,編輯.bashrc文件

vi ~/.bashrc

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

export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME

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

source ~/.bashrc

編寫運行腳本

我們需要編寫1個運行腳本,當啟動容器時,運行該腳本,啟動 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),隨后我們將通過該容器,創建1個可運行 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 服務。此時,需要使用以下命令:

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:表示容器名稱,用1個成心義的名稱命名便可。

關于 Docker 網橋的內容,需要補充說明1下。實際上 Docker 在宿主機與容器之間,搭建了1座網絡通訊的橋梁,我們可通過宿主機 IP 地址與端口號來映照容器內部的 IP 地址與端口號,

在1系列參數后面的是“鏡像名”或“鏡像 ID”,怎樣方便就怎樣來。最后是“初始命令”,它是上面編寫的運行腳本,里面封裝了加載環境變量并啟動 Tomcat 服務的命令。

當運行以上命令后,會立即輸出1長串“容器 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 容器?如何在容器內安裝利用程序?如何在容器上創建鏡像?如何以服務的方式啟動容器?這1切看似簡單,但操作也是相當繁瑣的,不過熟能生巧,需要我們不斷地操練。

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

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产国产人在线成免费视频69 | jizz成熟丰满中国妇女 | 羞羞人成午夜爽爽影院 | 国产成人一级片 | 一本久道久久综合婷婷五 | 欧美高清在线不卡免费观看 | 国产高清一 | 国产精品爱久久久久久久 | 日本aaaaa级毛片片 | 欧美18videosex护士 | 国产免费高清福利拍拍拍 | 免费区欧美一级毛片精品 | 欧美日韩亚洲国内综合网香蕉 | 欧美日韩亚洲国内综合网香蕉 | 色吊丝在线观看国产 | www天堂在线观看 | 欧美大逼逼 | 91精品人成在线观看 | 午夜dj视频在线高清免费 | 精品国产精品 | 亚洲欧洲日产国产 最新 | 无遮挡免费视频 | 永久在线毛片免费观看 | 国产高清在线视频一区二区三区 | 久久乐国产综合亚洲精品 | 欧美一级片免费看 | 亚洲最新永久在线观看 | 性freesexvideo xxx | 97午夜理伦片在线影院 | 亚洲国产成人99精品激情在线 | 男人看的网址 | 国产精美视频 | 亚洲一区二区三区高清视频 | 欧美色综合天天综合高清网 | 欧美高清性 | 日韩精品久久不卡中文字幕 | 国产亚洲精品午夜高清影院 | 免费爱爱网址 | 欧美日韩在线第一页 | 亚洲美女啪啪 | 图片区小说区综合区 |