1. 程式人生 > >Dockerfile構建tomcat映象並部署web應用

Dockerfile構建tomcat映象並部署web應用

一、前提

    在Linux環境,並已確認成功安裝Docker。

二、目的

  1. 構建一個以oracle jdk version:1.8.0.131+apache tomcat version:7.0.88  Docker
  2. 將一個簡單的web應用部署到建立好的Tomcat Docker 容器中。
  3. 成功啟動Tomcat Docker,並正常執行部署到Tomcat中的簡單應用。

三、構建JDK+Tomcat Docker步驟

  1. 建立Docker  目錄
mkdir -p $HOME/apps/Docker/tomcat7_jre18

    2.進入剛建立的目錄

cd $HOME/apps/Docker/tomcat7_jre18

    3.官網分別下載jdk-linux-1.8.131-x64.tar.gz、apache-tomcat-7.0.88.tar.gz,上傳至本目錄(tomcat-jre),並解壓縮重新命名。

tar -xvf apache-tomcat-7.0.88.tar.gz
tar -xvf jdk-linux-1.8.131-x64.tar.gz
mv apache-tomcat-7.0.88  tomcat7
mv jdk1.8.0_131 jdk18

    4.編寫Docker構建檔案

vi Dockerfile

#使用的基礎映象
FROM centos
#建立目錄
RUN mkdir -p /docker_home/local
#把當前目錄下的jdk資料夾新增到映象
ADD tomcat7 /docker_home/local/tomcat7
ADD java18 /docker_home/local/java18
ENV JAVA_HOME /docker_home/local/java18/
ENV CATALINA_HOME /docker_home/local/tomcat7
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
#暴露8080埠
EXPOSE 8080
#啟動時執行tomcat
CMD ["/docker_home/local/tomcat7/bin/catalina.sh","run"]

    5.構建docker images映象

#images REPOSITORY name:repos_local/tomcat7_jre18
docker build -t repos_local/tomcat7_jre18 .

    6.run images to be container

docker run -d -p 8081:8080 --name tomcat7 repos_local/tomcat7_jre18

   docker run  -d 後臺執行  -p 主機暴露埠:容易埠 --name container名稱(唯一)  映象名稱

   7.檢視是否啟動成功

docker ps
[[email protected] acs]# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
117b230feabb        repos_local/tomcat7_jre18  "/docker_home/tomcat7/b..."   10 hours ago        Up 11 seconds       0.0.0.0:8081->8080/tcp                           tomcat_acs

  8.訪問tomcat地址(成功訪問)

http://ip:8081

    9.進入已在執行docker tomcat 的容器中。

docker exec -it 117b230feabb /bin/bash

 docker exec -it 容器ID/容器name 設定使用語言:/bin/bash、/bin/sh

docker exec[OPTIONS] CONTAINER COMMAND [ARG...]exec[OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS說明:

  • -d :分離模式: 在後臺執行

  • -i :即使沒有附加也保持STDIN 開啟

  • -t :分配一個偽終端

    10.進入tomcat docker "webapps"目錄

docker exec -it 117b230feabb /bin/bash
cd webapps
pwd
/docker_home/local/tomcat7/webapps

    11.我們另開一個終端視窗,並將測試應用("hello-world.war")上傳至linux中

    測試應用上傳至linux 位置自己決定,cd 至該測試應用的目錄後,執行下面命令:

docker cp hello-world.war 117b230feabb:/docker_home/local/tomcat7/webapps

   上面命令是將linux中的檔案傳至docker 容器:docker cp 檔案路徑  容器ID/NAME:容器路徑

    12.訪問tomcat 應用

http://ip:8081/hello/

    13.訪問頁面成功,至此結束,謝謝大家檢視本文章。

四、簡單列舉Docker常用命令

docker的使用命令
1 docker 命令介紹
docker --help
管理命令:
  container   管理容器
  image       管理映象
  network     管理網路
命令:
  attach      介入到一個正在執行的容器
  build       根據 Dockerfile 構建一個映象
  commit      根據容器的更改建立一個新的映象
  cp          在本地檔案系統與容器中複製 檔案/資料夾
  create      建立一個新容器
  exec        在容器中執行一條命令
  images      列出映象
  kill        殺死一個或多個正在執行的容器    
  logs        取得容器的日誌
  pause       暫停一個或多個容器的所有程序
  ps          列出所有容器
  pull        拉取一個映象或倉庫到 registry
  push        推送一個映象或倉庫到 registry
  rename      重新命名一個容器
  restart     重新啟動一個或多個容器
  rm          刪除一個或多個容器
  rmi         刪除一個或多個映象
  run         在一個新的容器中執行一條命令
  search      在 Docker Hub 中搜索映象
  start       啟動一個或多個已經停止執行的容器
  stats       顯示一個容器的實時資源佔用
  stop        停止一個或多個正在執行的容器
  tag         為映象建立一個新的標籤
  top         顯示一個容器內的所有程序
  unpause     恢復一個或多個容器內所有被暫停的程序

2.docker build命令的使用格式:
docker build [OPTIONS] <PATH | URL | ->    

(1). 常用選項說明
--build-arg,設定構建時的變數
--no-cache,預設false。設定該選項,將不使用Build Cache構建映象
--pull,預設false。設定該選項,總是嘗試pull映象的最新版本
--compress,預設false。設定該選項,將使用gzip壓縮構建的上下文
--disable-content-trust,預設true。設定該選項,將對映象進行驗證
--file, -f,Dockerfile的完整路徑,預設值為‘PATH/Dockerfile’
--isolation,預設--isolation="default",即Linux名稱空間;其他還有process或hyperv
--label,為生成的映象設定metadata
--squash,預設false。設定該選項,將新構建出的多個層壓縮為一個新層,但是將無法在多個映象之間共享新層;設定該選項,實際上是建立了新image,同時保留原有image。
--tag, -t,映象的名字及tag,通常name:tag或者name格式;可以在一次構建中為一個映象設定多個tag
--network,預設default。設定該選項,Set the networking mode for the RUN instructions during build
--quiet, -q ,預設false。設定該選項,Suppress the build output and print image ID on success
--force-rm,預設false。設定該選項,總是刪除掉中間環節的容器
--rm,預設--rm=true,即整個構建過程成功後刪除中間環節的容器

(2.) PATH | URL | -說明:
給出命令執行的上下文。
上下文可以是構建執行所在的本地路徑,也可以是遠端URL,如Git庫、tarball或文字檔案等。
如果是Git庫,如https://github.com/docker/rootfs.git#container:docker,則隱含先執行git clone --depth 1 --recursive,到本地臨時目錄;然後再將該臨時目錄傳送給構建程序。
構建映象的程序中,可以通過ADD命令將上下文中的任何檔案(注意檔案必須在上下文中)加入到映象中。
-表示通過STDIN給出Dockerfile或上下文。
示例:

  • docker build - < Dockerfile

說明:該構建過程只有Dockerfile,沒有上下文

  • docker build - < context.tar.gz

說明:其中Dockerfile位於context.tar.gz的根路徑

  • docker build -t champagne/bbauto:latest -t champagne/bbauto:v2.1 .
  • docker build -f dockerfiles/Dockerfile.debug -t myapp_debug .