1. 程式人生 > >Docker部署Apache-tomcat

Docker部署Apache-tomcat

b16 網橋 腳本 訪問 jdk1.8 本地 force posit ash

Docker部署Apache-tomcat

實驗環境:
Centos 7
phpStudy(提供wget 下載以下的兩個軟件包到Centos)
所需軟件包:
jdk-8u11-linux-x64.tar.gz
apache-tomcat-7.0.84.tar.gz
提供下載鏈接:https://pan.baidu.com/s/1miZh9wO 密碼:8d5f


Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

我們可開啟多個 Docker 容器,而每個 Docker 容器中可運行自己所需的應用程序,Docker 容器之間也是相互隔離的,同樣地,都是占用的宿主機的硬件與網絡資源。

一、.配置好yum源
可參考:http://blog.51cto.com/12445563/2065914 配置好後進行以下代碼

[root@cany ~]# setenforce 0                                       臨時關閉selinux
[root@cany ~]# systemctl stop firewalld.service         關閉firewalld防火墻
[root@cany ~]# yum install docker -y                         安裝docker
[root@cany ~]# systemctl start docker.service           啟動docker服務

二、.下載鏡像
搜索可用的docker鏡像:docker search name
會從官方搜索匹配到的鏡像 也可以去配置國內源 下載相對快些

[root@cany ~]# docker pull centos:latest  下載最新Centos鏡像
Trying to pull repository docker.io/library/centos ... 
latest: Pulling from docker.io/library/centos
af4b0a2388c6: Pull complete 
Digest: sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
[root@cany ~]# docker images                   看本地所有的鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos       latest              ff426288ea90        2 weeks ago         207.2 MB
docker的鏡像並不大 這個最新的才207.2MB

三、.下載兩個軟件包
先把兩個軟件包放到phpStudy網站根目錄下

技術分享圖片

[root@cany ~]# mkdir /root/cany           創建存放目錄 等等可以掛載到容器裏面
[root@cany ~]# cd /root/cany/               把軟件包放到這文件夾裏面
[root@cany cany]# wget http://10.2.4.144/apache-tomcat-7.0.84.tar.gz
--2018-01-29 04:47:43--  http://10.2.4.144/apache-tomcat-7.0.84.tar.gz
Connecting to 10.2.4.144:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9032792 (8.6M) [application/x-gzip]
Saving to: ‘apache-tomcat-7.0.84.tar.gz’

100%[==============================================================================================================>] 9,032,792   --.-K/s   in 0.07s   

2018-01-29 04:47:43 (125 MB/s) - ‘apache-tomcat-7.0.84.tar.gz’ saved [9032792/9032792]

[root@cany cany]# wget http://10.2.4.144/jdk-8u11-linux-x64.tar.gz
--2018-01-29 04:47:58--  http://10.2.4.144/jdk-8u11-linux-x64.tar.gz
Connecting to 10.2.4.144:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 159019376 (152M) [application/x-gzip]
Saving to: ‘jdk-8u11-linux-x64.tar.gz’

100%[==============================================================================================================>] 159,019,376 23.2MB/s   in 12s    

2018-01-29 04:48:10 (12.5 MB/s) - ‘jdk-8u11-linux-x64.tar.gz’ saved [159019376/159019376]

四、.創建容器
用法:docker run <相關參數> <鏡像 ID> <初始命令>

                                                                   IMAGE ID
docker run -i -t -v /root/cany/:/mnt/cany/ ff426288ea90 /bin/bash

相關參數包括:

-i:表示以“交互模式”運行容器
-t:表示容器啟動後會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
此時使用/bin/bash,表示什麽也不做,只需進入命令行即可

五、.安裝服務相關環境和軟件
搭建apache-tomcat服務需要安裝jdk和tomcat (我選擇 /opt/目錄作為安裝目錄)
下面的過程均在容器內部進行:

[root@c6a61597a46d /]# cd /mnt/cany/                                  進入掛載的目錄
[root@c6a61597a46d cany]# tar -zxf                                      看到了我們下載的兩個軟件包 
apache-tomcat-7.0.84.tar.gz  jdk-8u11-linux-x64.tar.gz           
[root@c6a61597a46d cany]# tar -zxf apache-tomcat-7.0.84.tar.gz        進行解壓
[root@c6a61597a46d cany]# tar -zxf jdk-8u11-linux-x64.tar.gz           
[root@c6a61597a46d cany]# mv apache-tomcat-7.0.84/ /opt/tomcat/   把解壓後的文件夾轉移到我們選擇的安裝目錄
[root@c6a61597a46d cany]# mv jdk1.8.0_11/ /opt/jdk/  

設置環境變量
1.編輯.bashrc文件

[root@c6a61597a46d cany]# vi ~/.bashrc

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

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

技術分享圖片

[root@c6a61597a46d cany]# source ~/.bashrc   用source命令讓環境變量生效

2.編寫容器啟動運行腳本
畢竟容器鏡像比較小 原生 缺少很多環境 下面來編寫腳本
當啟動容器時,運行該腳本,啟動 Tomcat 具體步驟如下:

[root@c6a61597a46d cany]# vi /root/cany.sh
#!/bin/bash
source ~/.bashrc                                    必須先加載環境變量 
sh /opt/tomcat/bin/catalina.sh run          然後使用 Tomcat 的運行腳本來啟動
[root@c6a61597a46d cany]# chmod u+x /root/cany.sh   對當前目錄下的cany.sh文件的所有者增加可執行權限

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

六、創建tomcat鏡像
對於剛才的配置我們可以創建一個鏡像 方便以後直接利用 或者轉移到別的機器上也是可以使用的 具體操作如下:

[root@cany cany]# docker ps              查看正在運行的容器    怎麽會沒有呢  我們剛才不是已經創建了一個嗎?
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@cany cany]# docker ps -a          查看所以容器看看究竟  發現還在
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
c6a61597a46d        ff426288ea90        "/bin/bash"         36 minutes ago      Exited (0) 41 seconds ago                       kickass_hopper

因為剛才使用exit命令退出的容器,此時容器處於停止狀態 所以每次進入容器修改東西後出來一定要記得去開啟容器

記住以上CONTAINER ID(容器 ID),等等我們通過該容器,創建一個可運行tomcat的鏡像。

相關命令如下:

docker stop  <容器名or ID>          停止某個容器
docker start  <容器名or ID>          啟動某個容器
docker kill    <容器名or ID>           殺掉某個容器
docker rm    <容器名or ID>           刪除某個容器
docker rmi IMAGE                        刪除鏡像
docker ps -a -q                             查看所有容器ID
docker rm $(docker ps -a -q)        刪除所有的容器:
docker attach <容器名or ID>        attach到運行中的容器

把我們剛才配置好的做一個新的鏡像

[root@cany ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
c6a61597a46d        ff426288ea90        "/bin/bash"         58 minutes ago      Exited (0) 5 minutes ago                       kickass_hopper

[root@cany ~]# docker commit c6a61597a46d cany/tomcat:0.1
sha256:7cbbe3742372edc2a19ba37ea5684a573c92d2e08be437a9d6028688371b5152

[root@cany ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
cany/tomcat         0.1                 7cbbe3742372        18 seconds ago      544.9 MB
docker.io/centos    latest              ff426288ea90        2 weeks ago         207.2 MB

看到了嗎? 鏡像名為cany/tomcat

七、啟動tomcat鏡像容器
與上次啟動容器不同的是,我們現在不再進入容器的命令行,而是直接啟動容器內部的 Tomcat 服務

[root@cany ~]# docker run -d -p 80:8080 --name web cany/tomcat:0.1 /root/cany.sh
401ddf6c97128e377df9ae8f3992ef2b065d053475387e1fac6f49e2b7390414
[root@cany ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
401ddf6c9712        cany/tomcat:0.1     "/root/cany.sh"     32 seconds ago      Up 29 seconds       0.0.0.0:80->8080/tcp   web

-d:表示以“守護模式”執行/root/cany.sh腳本,此時 Tomcat 控制臺不會出現在輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射為宿主機的 80 端口,這樣就向外界暴露了 80 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。
--name:表示容器名稱,用一個有意義的名稱命名即可。

Docker網橋:通過宿主機 IP 地址與端口號來映射容器內部的 IP 地址與端口號

八、測試

http://10.2.4.88/   這裏使用的是宿主機的 IP 地址 容器的8080端口映射到了80端口 因為http默認是80 所以不需要打端口 直接訪問

技術分享圖片

怎麽是hello cany ?
答:因為我去了/opt/tomcat/webapps/ROOT 目錄 刪掉了全部文件 創建了index.html 不過你們可以忽略此步 所以我就沒寫在上面了

總結:當我開始了解docker的時候就去網上查閱其他大神的文章 發現挺多講的不是很全 也沒有提供相關軟件包 綜合所查閱到的資料 終於做通了這個實驗 並上傳了我個人實驗的軟件包 希望此文章能幫助到剛入門docker的朋友們!!!

Docker部署Apache-tomcat