八、上傳web項目並啟動docker的tomcat服務


八、上傳web項目並啟動docker的tomcat服務

1、Centos7使用 yum 安裝docker

#查看你當前的內核版本 uname -r
#安裝 Docker
yum -y install docker-io

2、啟動 Docker 后台服務

service docker start

3、上傳項目到/docker/resource/ 目錄(只是一個springboot的demo應用測試)

[root@iz2zecm4ndtkaue32tynx5z resource]# pwd /docker/resource [root@iz2zecm4ndtkaue32tynx5z resource]# ls taobao-v1.0.war [root@iz2zecm4ndtkaue32tynx5z resource]# 

2、以交互模式啟動容器(檢查一下tomcat的安裝位置):

docker run -it --name mytomcat -p 1082:8080 tomcat:8 /bin/bash

進入容器后,查看tomcat安裝路徑

find / -name *tomcat*

 

[root@iz2zecm4ndtkaue32tynx5z resource]# docker exec -it mytomcat /bin/bash root@31dfa63eae1f:/usr/local/tomcat# find / -name *tomcat* /usr/local/tomcat                 /usr/local/tomcat/conf/tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xsd /usr/local/tomcat/webapps/manager/images/tomcat.gif /usr/local/tomcat/webapps/docs/images/tomcat.png /usr/local/tomcat/webapps/docs/images/tomcat.svg /usr/local/tomcat/webapps/docs/images/tomcat.gif /usr/local/tomcat/webapps/docs/appdev/sample/web/images/tomcat.gif /usr/local/tomcat/webapps/host-manager/images/tomcat.gif /usr/local/tomcat/webapps/ROOT/tomcat.png /usr/local/tomcat/webapps/ROOT/tomcat.svg /usr/local/tomcat/webapps/ROOT/tomcat.gif /usr/local/tomcat/webapps/ROOT/tomcat.css /usr/local/tomcat/webapps/ROOT/tomcat-power.gif /usr/local/tomcat/bin/tomcat-juli.jar /usr/local/tomcat/lib/tomcat-websocket.jar /usr/local/tomcat/lib/tomcat-jni.jar /usr/local/tomcat/lib/tomcat-dbcp.jar /usr/local/tomcat/lib/tomcat-api.jar /usr/local/tomcat/lib/tomcat-util.jar /usr/local/tomcat/lib/tomcat-i18n-es.jar /usr/local/tomcat/lib/tomcat-coyote.jar /usr/local/tomcat/lib/tomcat-util-scan.jar /usr/local/tomcat/lib/tomcat-i18n-fr.jar /usr/local/tomcat/lib/tomcat-i18n-ja.jar /usr/local/tomcat/lib/tomcat-jdbc.jar find: ‘/proc/1/map_files’: Operation not permitted find: ‘/proc/51/map_files’: Operation not permitted find: ‘/proc/84/map_files’: Operation not permitted find: ‘/proc/93/map_files’: Operation not permitted find: ‘/proc/97/map_files’: Operation not permitted root@31dfa63eae1f:/usr/local/tomcat# 

根據內容得知tomcat的根目錄:/usr/local/tomcat/ ,項目的部署目錄就應該是: /usr/local/tomcat/webapps/

 前邊已經通過命令將項目上傳到/docker/resource/目錄,可以通過如下命令重新啟動一個容器:

兩種部署web項目到docker的方式:

第一種部署方法,啟動鏡像時需要掛載目錄到本地:

docker run -i -t -v /docker/resource:/usr/local/tomcat/webapps/ 53a0016cd0ba /bin/bash

進入系統內部:

docker exec -it 53a0016cd0ba /bin/bash

可以看到:

root@53a0016cd0ba:/tmp/mesos-sandbox# 

新建Dockerfile文件:

from hub.c.163.com/library/tomcat MAINTAINER diy_os diy_os@163.com COPY web.war /usr/local/tomcat/webapps 把war包放在同一目錄下,執行sudo docker build -t ImageName:version .即可。

web項目跟進宿主機的本地掛載目錄

docker run -d --name=mytomato03 -it -v /docker/resource/:/usr/local/tomcat/webapps/ -p 2080:8080 tomcat:8

 

宿主機上查看監聽端口:

[root@iz2zecm4ndtkaue32tynx5z resource]# netstat -tunlp | grep 2080 tcp6 0 0 :::2080 :::* LISTEN 13406/docker-proxy- [root@iz2zecm4ndtkaue32tynx5z resource]# 

說明一下幾個參數的含義:

 -t (tcp) 僅顯示tcp相關選項 -u (udp)僅顯示udp相關選項 -n 拒絕顯示別名,能顯示數字的全部轉化為數字 -l 僅列出在Listen(監聽)的服務狀態 -p 顯示建立相關鏈接的程序名

瀏覽器訪問頁面:

 

 

基於正在運行的容器創建新的鏡像image:

docker commit 容器ID 自定義鏡像名稱

 

[root@iz2zecm4ndtkaue32tynx5z resource]# docker commit ab5efb23746f mytomcat-09 sha256:11c720a2f77e4ed5ebde7be027075bf41383f080d27122144ca55bb16bb2c84e [root@iz2zecm4ndtkaue32tynx5z resource]# 

 二、通過Dockerfie制作鏡像文件方式打包jdk+tomcat

將自己的javaweb項目與docker結合

1、准備jdk+tomcat軟件

材料:

1、jdk:jdk-8u141-linux-x64.tar.gz

2、tomcat:apache-tomcat-8.5.32.tar.gz

 wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz

3、web測試項目:taobao-v1.0.war

4、Dockerfie文件: Dockerfile

2、步驟:

2.1、存儲於Linux機器的本地目錄/docker/resource下(利用CRT上傳)。

2.2、利用linux命令解壓jdk和tomcat

  tar -zxvf  待解壓文件

#解壓jdk
tar -zxvf jdk-8u141-linux-x64.tar.gz
#解壓tomcat
tar -zxvf apache-tomcat-8.5.32.tar.gz

2.3、然后重命名兩個文件夾為jdk和tomcat方便下一個步驟。

  mv 源文件 目標文件

#改名jdk
mv jdk1.8.0_141 jdk
#改名tomcat
mv apache-tomcat-8.5.32 tomcat

jiang項目taobao-v1.0.war解壓放到tomcat目錄webapps/下

#unzip -d 指定目錄,建議加上此命令,不加-d會散包解壓
unzip -oq taobao-v1.0.war -d tomcat/webapps/taobao-v1.0

 

編寫Dockerfile文件​​

#--------------------------------------------------------------------- #This is a comment注釋 #使用基礎鏡像centos ,本地沒有回自動去docker上下載 FROM centos #指定鏡像創建者信息 MAINTAINER tonny <<A href="mayun@51cto.com">88888888@163.com> #切換鏡像的目錄,進入/usr目錄(基礎鏡像是一個linux系統,可參照linux查看相應目錄) WORKDIR /usr #在/usr/下創建java目錄,用來存放jdk RUN mkdir java #切換鏡像的目錄至/usr/java WORKDIR /usr/java #在/usr/java下創建jdk目錄,用來存放jdk文件 RUN mkdir jdk #切換鏡像的目錄至/usr/java/jdk WORKDIR /usr/java/jdk #將宿主機的jdk目錄下的全部文件考入至鏡像的/usr/java/jdk目錄下 ADD jdk /usr/java/jdk #切換鏡像的目錄至/opt WORKDIR /opt #在/opt下創建tomcat目錄,用來存放tomcat文件 RUN mkdir tomcat #將宿主機的tomcat目錄下的全部文件考入至鏡像的/opt/tomcat目錄下 ADD tomcat /opt/tomcat #設置環境變量 ENV JAVA_HOME=/usr/java/jdk ENV JAVA_BIN=/usr/java/jdk/bin ENV PATH=$PATH:$JAVA_HOME/bin ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #設置容器啟動時執行的操作 CMD /opt/tomcat/bin/catalina.sh run #---------------------------------------------------------------------

上面就是文件的具體內容,每行代碼都寫有注釋,將這個文件放在剛剛解壓jdk和tomcat的同級目錄。

 3、制作基礎鏡像

使用命令:docker build -t base_server:latest . 其中base_server為鏡像名稱,latest為鏡像tag。 [root@iz2zecm4ndtkaue32tynx5z resource]# docker build -t base_server:latest . 制作成功后,查看鏡像:docker images
[root@iz2zecm4ndtkaue32tynx5z resource]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
base_server         latest              d638ded2e9be        20 seconds ago      610 MB
docker.io/centos    latest              49f7960eb7e4        8 weeks ago         200 MB
[root@iz2zecm4ndtkaue32tynx5z resource]#

 

注意:1.文件名不能有大寫字母,需要的話用下划線分開。

2.語句的最后空格加上句號,代表在當前目錄的文件夾下面進行此操作。

三、啟動容器

使用命令:docker run -d -p 5050:8080 base_server:latest
 -d:表示以“后台模式”啟動,此時 Tomcat 控制台不會出現在輸出終端上。 -p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射為宿主機的 5050 端口,這樣就向外界暴露了 5050 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。 --name:表示容器名稱,用一個有意義的名稱命名即可。
四、測試訪問:ip+宿主機端口

 五、測試訪問項目頁面:

 六、將創建好的鏡像上傳到docker hub倉庫

為存在於本地的鏡像打標簽,命令如下:
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
這里的tag不指定就是latest。 

push鏡像,命令如下: docker push <hub-user>/<repo-name>:<tag>

通過命令拉取一下鏡像看看是否成功。命令如下:
docker pull <hub-user>/<repo-name>:<tag>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM