溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在docker中部署Tomcat web

發(fā)布時間:2020-06-11 20:30:42 來源:億速云 閱讀:625 作者:元一 欄目:云計算

Tomcat簡介

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應(yīng)用服務(wù)器

Tomcat優(yōu)點

1、兼有可擴du展性和安全性。假如單位時間內(nèi)訪問請求zhi數(shù)急劇增加,可以用相對較低的費dao用增加前端的能力。

2、比較容易擴展。由于是通過在這臺功能強大的服務(wù)器上運行的單個servlet容器,實際上也就不需要考慮session狀態(tài)在分布式環(huán)境下的維護這類復(fù)雜的問題。

3、臺后端服務(wù)器在外界不可以訪問,網(wǎng)上的黑客只能訪問前端的web服務(wù)器,不能直接訪問后端的應(yīng)用服務(wù)器,這就提高了安全性。但這并不意味著黑客們不能通過網(wǎng)絡(luò)瀏覽器進行其它形式的攻擊。

一、    準備工作

  1. 關(guān)閉selinux服務(wù)
    getenforce  查看selinux狀態(tài),并關(guān)閉selinux,否則啟動docker時會報錯。
    [root@localhost ~]# getenforce            查看selinux狀態(tài)
    Disabled
    修改selinux配置文件
    如何在docker中部署Tomcat web
    docker啟動報錯信息:
    如何在docker中部署Tomcat web
    修改完selinux后重啟服務(wù)器:
    [root@localhost ~]# reboot
    (注:安裝軟件為docker的可能會遇到這個問題,安裝軟件為docker-ce可能不會遇到。)

  2. 下載安裝docker-ce
    [root@localhost ~]#yum list | grep docker-ce     檢查yum 源的docker包信息
    [root@localhost~]#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo   安裝rpm更新源
    [root@localhost ~]# yum list docker-ce --showduplicates | sort –r  查看倉庫中docker版本
    [root@localhost ~]#yum install -y docker-ce       安裝docker
    [root@localhost ~]#systemctl strat docker.service      啟動docker程序
    [root@localhost ~]# systemctl status docker.service     查看docker運行狀態(tài)

如何在docker中部署Tomcat web
[root@localhost ~]#systemctl enable docker.service      添加開機啟動
[root@localhost ~]# docker version      查看docker版本
Client: Docker Engine - Community
Version:           19.03.5
API version:       1.40
Go version:        go1.12.12
Git commit:        633a0ea
Built:             Wed Nov 13 07:25:41 2019
OS/Arch:           linux/amd64
Experimental:      false

  1. 部署jave環(huán)境
    wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1575959715_a901df40b664e3cff9415b957ddf441e
    [root@localhost ~]# docker cp jdk-8u231-linux-x64.tar.gz 4c069f9a9851:/root 將jdk拷貝到容器中
    拷貝命令:docker cp <.bashrc文件路徑> <鏡像name或image_ID>:<文件存放路徑>
    [root@localhost ~]# docker exec -it tomcat /bin/bash      進入Tomcat容器
    root@4c069f9a9851:~# cd /root/
    root@4c069f9a9851:~# tar -zxvf jdk-8u231-linux-x64.tar.gz      解壓jdk
    修改環(huán)境變量,在.bashrc中添加jdk變量,添加以下代碼。
    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231  
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH
    如何在docker中部署Tomcat web
    重啟Tomcat容器:
    [root@localhost src]# docker ps -a
    CONTAINERID   IMAGE   COMMAND   CREATED   STATUS    PORTS    NAMES
    e14bcf5dd711 training/sinatra "/bin/bash" 19 hours ago  Exited (0) 19 hours ago                            kind_golick
    4c069f9a9851 tomcat "catalina.shrun" 19 hours ago Up 17h ours        0.0.0.0:8081->8080/tcp   tomcat
    [root@localhost src]# docker restart 4c069f9a9851

    [root@localhost src]# docker restart tomcat
    二、  安裝web應(yīng)用
    [root@localhost ~]# docker search tomcat     在網(wǎng)上服務(wù)器查找有關(guān)Tomcat鏡像信息
    如何在docker中部署Tomcat web
    我們選擇“STARS”資源最多的進行拉取
    [root@localhost ~]# docker pull docker.io/tomcat          拉取Tomcat鏡像
    [root@localhost ~]# docker run -d --name tomcat -p 8081:8080 docker.io/tomcat   后臺運行Tomcat鏡像
    若端口被占用,可以指定容器和主機的映射端口,前者是外圍訪問端口,后者是容器內(nèi)部端口。 -d參數(shù):容器會在后臺運行并不會把輸出的結(jié)果打印到宿主機上面。使用 -d 參數(shù)啟動后會返回一個唯一的 id。
    注:在此處遇到在不運行這條命令時Tomcat鏡像無法啟動。錯誤如下:
    [root@localhost ~]# docker start docker.io/tomcat
    Error response from daemon: No such container: docker.io/tomcat
    Error: failed to start containers: docker.io/tomcat
    其次在查看鏡像狀態(tài)時,不顯示任何信息:
    [root@localhost ~]# docker ps -a
    CONTAINER ID   IMAGE    COMMAND   CREATED   STATUS  PORTS   NAMES

[root@localhost ~]# docker run -d --name tomcat -p 8081:8080 docker.io/tomcat

[root@localhost ~]# systemctl status firewalld.service       查看防火墻運行狀態(tài)
如何在docker中部署Tomcat web
[root@localhost ~]# docker start tomcat
注:
前提:在此處由于前面將防火墻關(guān)閉,導致在啟動Tomcat鏡像時,無法啟動。
原因:由于Tomcat鏡像需要用到NAT服務(wù),關(guān)閉防火墻導致NAT服務(wù)無法使用。
問題信息:
[root@localhost ~]# docker start tomcat
Error response from daemon: driver failed programming external connectivity on endpoint tomcat (826ed3a9043296bc37b913c8f0cd900fe7424ffdcb93ff22d5f95fc39070a21f):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.

[root@localhost ~]# docker ps –a        查看鏡像信息
如何在docker中部署Tomcat web
注意Tomcat鏡像的PORTS信息是否是0.0.0.0:8081->8080/tcp內(nèi)容,是的話直接訪問IP:8081,不是的話可能需要做NAT轉(zhuǎn)換,自定義端口訪問。
三、  效果圖
如何在docker中部署Tomcat web
四、  部署網(wǎng)頁測試
將web數(shù)據(jù)拷貝到Tomcat容器中
[root@localhost ~]# docker cp XXX.war 4c069f9a9851:/usr/local/tomcat/webapps
[root@localhost ~]# docker exec -it 4c069f9a9851 /bin/bash     進入Tomcat容器
root@4c069f9a9851:/usr/local/tomcat# cd webapps/
root@4c069f9a9851:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  index.html  manager
退出docker容器,Ctrl+p+q
重新啟動容器,docker restart tomcat
到此web部署就算完成了。
可參考:https://blog.csdn.net/liqz666/article/details/82180581
五、  常用命令
ip addr/ip link/ ifconfig:查看宿主機里ip地址(宿主機表示是虛擬機)

systemctl start docker/service start docker:啟動docker服務(wù)

systemctl stop docker:關(guān)閉docker服務(wù)

docker run:啟動container

docker seach xxxx(鏡像名稱):檢索鏡像

docker pull xxx(鏡像名稱):拉取鏡像

docker images:列出鏡像

docker  --version:查看docker的版本信息

docker exec Container Id:進入容器

docker exec -it NAMES(自定義名稱) /bin/bash:進入--name命名的容器

docker exec NAMES(容器的自定義名稱)-it bash:進入容器里進行操作

docker attach Container Id:進入到容器的終端

docker inspect IMAGE ID:顯示容器或鏡像的元數(shù)據(jù)

[root@(container id)]:比如root@24527d42d3eb表示已進入docker里的一個CONTAINER ID的容器內(nèi)部

docker ps:查看docker里運行的容器(status為Up....表示運行中)

docker ps -a:查看docker里已停止或正在運行的容器(status為Exit)

docker start CONTAINER ID   :如果容器的狀態(tài)為Exit,用它來啟動容器

docker stop CONTAINER ID   :停止正在運行的容器,刪除一個容器必須先要停止

docker restart :當部署web項目的war文件,到tomcat里的webapps里面了,重啟一下docker服務(wù),就自動解壓了war文件

docker rm CONTAINER ID :刪除容器

docker rm $(docker ps -a -q):刪除所有已停止的容器;

docekr rmi IMAGE ID:刪除鏡像

rm -rf xxxx:強制刪除某個war.文件或目錄、文件

docker cp /xxx.war CONTAINER ID   :/usr/local/tomcat/webapps:從/根目錄復(fù)制一個打包后的Java web war文件 到tomcat容器里的webapps工作目錄里

docker exec CONTAINER ID   ls /usr/local/tomcat:默認的 安裝tomcat鏡像的webapps目錄

docker run -name xxx -p  (自定義端口號,用來訪問的):(容器的端口號:比如tomcat的8080,mysql的3306) -d docker.io/tomcat(鏡像名稱):表示在docker里運行一個tomcat容器,如果沒有鏡像,自動pull一個tomcat的鏡像
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--name 為容器取一個名字

-p 容器要映射的端口號

-d:后臺運行

-t:進入終端

-i:獲得一個交互式的連接,通過獲取container的輸入

/bin/bash:在container中啟動一個bash shell

舉例:docker run --name tomcat -p 8081:8080 -d tomcat

六、  查看docker日志
[root@localhost ~]# journalctl -u docker.service  查看docker日志

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI