天天看點

Docker 02 - 向 Docker 的 Tomcat 鏡像中部署 Web 應用

本篇通過比較詳細的示例, 示範通過Docker的Tomcat鏡像釋出Web項目, 包括下載下傳Tomcat鏡像, 通過Dockerfile自定義項目的鏡像, 修改鏡像中的檔案等内容.

目錄

  • 1 下載下傳 Docker 鏡像
  • 2 部署Web項目
    • 2.1 通過Dockerfile自定義項目鏡像
    • 2.2 啟動自定義鏡像, 生成一個容器
    • 2.3 另一種啟動方式: 互動式啟動
  • 3 (附) 向鏡像中添加檔案
  • 參考資料
  • 版權聲明
在此篇之前, 需要配置一些環境, 請參考上一篇的介紹: Docker 01 - CentOS 7 中安裝 Docker 的詳細步驟.

# 檢視本地鏡像(暫時沒有任何鏡像):
[root@localhost /data]# docker images
REPOSITORY      TAG             IMAGE ID        CREATED         SIZE

# 檢視正在運作的 Docker 容器(暫時沒有運作的):
[root@localhost /data]# docker ps
CONTAINER ID    IMAGE           COMMAND         CREATED         STATUS        PORTS         NAMES
           

配置國内的鏡像加速器, 然後抓取 Tomcat 的鏡像:

# 前往 Docker 安裝目錄, 新增配置:
[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ls
key.json
[root@localhost docker]# vim daemon.json 

# 加速器配置内容如下:
{
  "registry-mirrors": ["https://registry.docker-cn.com", "https://pee6w651.mirror.aliyuncs.com"]
}

# 儲存、退出後, 另配置生效:
[root@localhost docker]# systemctl daemon-reload
# 最後需要重新開機 Docker 服務:
[root@localhost docker]# systemctl start docker.service

# 然後從倉庫中拉取 Tomcat 鏡像(下面鏡像名稱與鏡像分支号之間的冒号":"不能有空格):
[root@localhost /data]# docker pull tomcat:8.5.43
8.5.43: Pulling from library/tomcat
9cc2ad81d40d: Pulling fs layer 
e6cb98e32a52: Download complete 
42cfa3699b05: Pull complete 
......
Digest: sha256:6e30b06a90d3206519a5ea730057001a1b830b9169e1baf76a97e1767efc0db7
Status: Downloaded newer image for tomcat:8.5.43

# 檢視是否拉取成功:
[root@localhost docker]# docker image ls
REPOSITORY      TAG             IMAGE ID        CREATED         SIZE
tomcat          8.5.43          6e30b06a90d3    4 days ago      506MB
           

我們通過 Dockerfile 腳本(由一系列指令和參數構成), 從基礎鏡像中建立一個新的、自定義的鏡像.

# 建立操作目錄:
[root@localhost ~]# mkdir -p /data/Docker && cd /data/Docker
# 建立 Dockerfile 腳本, 内容如下:
[root@localhost ~]# cat Dockerfile
FROM tomcat:8.5.43
ADD heal-test /usr/local/tomcat/webapps

# 其中 “heal-test” 是我們要釋出的測試Web項目, 是解壓後的檔案, 與 Dockerfile 處于同級目錄.

# 在 Dockerfile 檔案所在目錄執行:
[root@localhost Docker]# docker build --rm -t heal-test:1.0 .
Sending build context to Docker daemon  70.75MB
Step 1/2 : FROM tomcat:8.5.43
 ---> 6e30b06a90d3
Step 2/2 : ADD goSearch /usr/local/tomcat/webapps
 ---> 09ddcc5cacc6
Successfully built 09ddcc5cacc6
Successfully tagged heal-test:1.0

# 檢視鏡像是否生成:
[root@localhost Docker]# docker images
REPOSITORY      TAG             IMAGE ID        CREATED         SIZE
heal-test       1.0             09ddcc5cacc6    7 seconds ago   576MB
tomcat          8.5.43          6e30b06a90d3    4 days ago      506MB
           

# 根據自定義的鏡像建立一個容器, 運作在主控端的 7070 端口上:
[root@localhost data]# docker run -it -p 7070:8080 heal-test:1.0

# 檢視是否正常運作:
[root@localhost data]# docker ps
CONTAINER ID    IMAGE           COMMAND             CREATED           STATUS            PORTS                    NAMES
23f14c40c4f8    heal-test:1.0   "catalina.sh run"   20 seconds ago    Up 19 seconds       0.0.0.0:7070->8080/tcp   upbeat_meninsky
           

# 通過bash指令, 與 Docker 進行互動:
[root@localhost Docker]# docker run -it --name heal-test -p 7070:8080 heal-test:1.0 bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
root@87aabcbc700b:/usr/local/tomcat# cd conf/
root@87aabcbc700b:/usr/local/tomcat/conf# ls
catalina.policy      context.xml           jaspic-providers.xsd  server.xml        tomcat-users.xsd
catalina.properties  jaspic-providers.xml  logging.properties    tomcat-users.xml  web.xml
root@87aabcbc700b:/usr/local/tomcat/conf# exit
exit
           

鏡像中一般不支援

vi

vim

等工具, 是以我們可以借助

cp

(拷貝)指令上傳檔案到鏡像中.

# 通過 cp 指令将檔案拷貝到容器中:
[root@localhost data]# docker cp test.xml 23f14c40c4f8:/usr/local/tomcat/conf/Catalina/localhost
           

Docker 删除鏡像

使用 Dockerfile 定制鏡像

在docker下的tomcat容器中部署war包的兩種方式

Docker安裝+HelloWorld+運作Tomcat

作者: 馬瘦風(https://healchow.com)

出處: 部落格園 馬瘦風的部落格(https://www.cnblogs.com/shoufeng)

感謝閱讀, 如果文章有幫助或啟發到你, 點個[好文要頂👆] 或 [推薦👍] 吧😜

本文版權歸部落客所有, 歡迎轉載, 但 [必須在文章頁面明顯位置标明原文連結], 否則部落客保留追究相關人員法律責任的權利.