centos7創建docker tomcat鏡像


1 准備宿主系統

准備一個 CentOS 7操作系統,具體要求如下:

  • 必須是 64 位操作系統

  • 建議內核在 3.8 以上

通過以下命令查看您的 CentOS 內核:

1
# uname -r

2 安裝Docker

1
# yum install docker

可使用以下命令,查看 Docker 是否安裝成功:

1
# docker version

若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:

1
# systemctl start  docker.service 

一旦 Docker 服務啟動完畢,就可以開始使用 Docker 了。

3 下載鏡像

以 CentOS 為例,下載一個 CentOS 的鏡像:

1
# docker pull centos

下載完成后,使用命令查看本地鏡像列表:

1
2
3
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              e934aafc2206         2  weeks ago         199MB

4 宿主機創建/root/software/目錄,並把安裝包放在該目錄下

5 啟動容器

容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。

使用以下命令即可啟動容器:

1
# docker run -i -t -v /root/software/:/mnt/software/ e934 /bin/bash

命令包含以下三個部分:

1
docker run <相關參數> <鏡像 ID> <初始命令>

其中,相關參數包括:

  • -i:表示以“交互模式”運行容器

  • -t:表示容器啟動后會進入其命令行

  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

本例中,所有安裝程序都放在了宿主機的/home/data/tomcatv1-103目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。

1
2
3
4
5
6
# cd /mnt/software/
# pwd
/mnt/software
 
# ls
apache-tomcat- 7.0 . 81 .tar.gz  jdk-8u121-linux-x64.tar.gz

初始命令表示一旦容器啟動,需要運行的命令,此時使用“/bin/bash”,表示啟動后直接進入bash shell。

6 安裝軟件

為了搭建 Java Web 運行環境,需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。本例中,選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。

6.1 安裝JDK

首先,解壓 JDK 程序包:

1
# tar -zxf /mnt/software/jdk-8u121-linux-x64.tar.gz -C .

然后,移動 JDK 目錄:

1
# mv jdk1. 8 .0_121/ /opt/jdk/

6.2 安裝Tomcat

首先,解壓Tomcat程序包:

1
# tar -zxf /mnt/software/apache-tomcat- 7.0 . 81 .tar.gz -C .

然后,移動Tomcat目錄:

1
# mv apache-tomcat- 7.0 . 81 / /opt/tomcat/

6.3 編寫運行腳本

編寫一個運行腳本,當啟動容器時,運行該腳本,啟動 Tomcat。

首先,創建運行腳本:

1
2
3
# touch /root/run.sh
 
# vi /root/run.sh

然后,編輯腳本內容如下:

1
2
3
4
5
6
#!/bin/bash
  
export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH
  
sh /opt/tomcat/bin/catalina.sh run

最后,為運行腳本添加執行權限:

1
# chmod u+x /root/run.sh

7 退出容器

當以上步驟全部完成后,可使用exit命令,退出容器。

隨后,可使用如下命令查看正在運行的容器:

1
docker ps

此時,應該看不到任何正在運行的程序,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令查看所有容器:

1
2
3
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                     NAMES
d4e3a062ab05        e934                 "/bin/bash"               38  minutes ago      Exited ( 0 ) About a minute ago                              lucid_einstein

記住以上CONTAINER ID(容器 ID),隨后將通過該容器,創建一個可運行 Tomcat 鏡像。

8 創建Tomcat鏡像

使用以下命令,根據某個“容器 ID”來創建一個新的“鏡像”:

1
2
3
4
5
6
7
# docker commit d4e3 mytomcat: 1.0
sha256:c5ef8dacbf3eead5ea2b9fc3c1050a395863c6db0abd0eb7d6dee8ed46a31ffd
 
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mytomcat             1.0                  c5ef8dacbf3e         18  seconds ago      583MB
centos              latest              e934aafc2206         2  weeks ago         199MB

該容器的ID是d4e3,所創建的鏡像名是“mytomcat:1.0”,隨后可使用鏡像來啟動Tomcat容器。

9 啟動Tomcat容器

首先,新建/root/webapps/ROOT目錄,

1
2
3
4
5
6
# cd /root
# mkdir webapps
# cd webapps/
# mkdir ROOT
# cd ROOT/
# vi index.html

並在該目錄下創建一個index.html文件,文件內容如下:

1
2
3
4
5
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

正如上面所描述的那樣,可以通過“鏡像名”或“鏡像 ID”來啟動容器,與上次啟動容器不同的是,現在不再進入容器的命令行,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:

1
# docker run -d -p  58080 : 8080  -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat: 1.0  /root/run.sh

docker run -it --name tomcatv1-103 --net net18 --ip 198.8.18.103 -v /home/data/tomcatv1-103/:/mnt/software tomcat:v1.0 /root/run.sh

其中,相關參數包括:

  • -d:表示以“守護模式”執行/root/run.sh腳本,此時 Tomcat 控制台不會出現在輸出終端上。

  • -p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射為宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。

  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

  • --name:表示容器名稱,用一個有意義的名稱命名即可。

在瀏覽器中,輸入宿主IP和端口號,即可訪問 Tomcat:

10 最終示意圖:

11 停止Tomcat容器

1
2
3
4
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                     NAMES
54215923125b        mytomcat: 1.0         "/root/run.sh"            3  minutes ago       Up  3  minutes                      0.0 . 0.0 : 58080 -> 8080 /tcp   mytomcat_1
<br># docker stop  5421

12 移除容器

1
2
3
4
5
6
7
8
9
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                     NAMES
54215923125b        mytomcat: 1.0         "/root/run.sh"            3  minutes ago       Exited ( 137 2  seconds ago                                 mytomcat_1
 
# docker rm  5421
5421
 
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                     NAMES

13 移除鏡像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mytomcat             1.0                  c5ef8dacbf3e         20  minutes ago      583MB
centos              latest              e934aafc2206         2  weeks ago         199MB
 
# docker rmi c5ef
Untagged: mytomcat: 1.0
Untagged: mytomcat @sha256 :d949cbb93a58de27eec4c911f27b9f09edeb3d3ce57cf5ce77d4745211c947f6
Deleted: sha256:c5ef8dacbf3e7ce916f57c52c16de3892c724996b5e30ca0d141c81897d9a06c
Deleted: sha256:7e62d1c2f904e8de3fadc6b01edea96bcb324634f0df514cc9297b1bf11d2f06
 
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              e934aafc2206         2  weeks ago         199MB

 

 

PS:本文參考了使用 Docker 搭建 Tomcat 運行環境

參考:

https://www.cnblogs.com/areyouready/p/8949991.html


免責聲明!

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



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