八、上傳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>