一、实训内容
在 Linux 虚拟机中,安装好 Docker,搭建私有仓库,利用 Dockerfile 构 建 JavaWeb 应用程序部署所需的镜像,推送到私有仓库中,然后从另一台虚拟 机拉取所需镜像后创建容器运行,最后在浏览器中打开网页测试运行
1.首先准备好两个虚拟机,一个用来当服务器搭建私有仓库,另一个用来当客户机拉取镜像
tips:首先检查两台虚拟机的IP,能否Ping通外网以及互相Ping通
两台机子均可以互相ping通,且能ping通外网,虚拟机设置为NAT模式,防止切换网络导致的IP变动
服务器IP:192.168.150.128
客户机IP:192.168.150.141
二、搭建私有仓库
.接下来给服务器搭建Dokcer私有仓库,具体步骤如下
首先从Dokcer Hub中拉取仓库镜像
运行仓库镜像并映射到5000端口供客户机访问, --restart=always 表示容器停止时自动重启
三.利用Dockerfile 搭建Tomcat服务,并构建测试页面
目录结构:/home/mydockerfile/mytomcatimages
具体包含内容如下:
FROM centos:7
MAINTAINER ffctf<ffctf@163.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u11-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.22.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH #JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINE_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
(2)构建tomcat镜像
:::info
docker build -t tomcat .
:::
(2)启动镜像
docker run -d -p 9090:8080 --name mytomcat01 -v /home/mydockerfile/mytomcatimages/build/test/:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/mydockerfile/mytomcatimages/build/logs/:/usr/local/apache-tomcat-9.0.22/logs tomcat
(3)构建测试页面
在宿主机挂载的test目录创建一个web-inf目录
进入WEB-INF目录,然后创建一个web.xml文件,在其中写入下面这些代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
然后退出WEB-INF目录,创建一个index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello, moon</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("----my test web logs----");
%>
</body>
</html>
运行结果如下:
四.搭建mysql服务
(1)拉取mysql镜像
docker pull mysql:5.7.33
(2)制作mysql容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.33
(3)用猫猫连接数据库,并导入sql文件
五.利用Tomcat部署war包
(1)进入容器内部
docker exec -it f56caccccd3b bash
(2)利用映射的test目录把pb-cms.war移动到webapps目录下
(3)修改pb-cms.war包内数据库配置IP为192.168.150.128
(4)访问pb-cms
六.把打包好的Mysql镜像推送到服务器上,并利用另一台客户机下载
(1)将正在运行的容器打包成镜像
docker commit -a “ffctf” -m “my mysql” 450379344707 mysql-top
(2)要推送到私有仓库一定要重命名
docker tag mysql-top:latest 192.168.150.128:5000/mysql
(3)推送镜像
docker push 192.168.150.128:5000/mysql
(4)利用客户机拉取镜像
docker pull 192.168.150.128:5000/mysql
(5)运行镜像
docker run -d -p 3306:3306 --name mysql 192.168.150.128/mysql
七.把打包好的tomcat镜像推送到服务器上,并利用另一台客户机下载
(1)将正在运行的容器打包成镜像
docker commit -a “ffctf” -m “my tomcat” f56caccccd3b tomcat-top
(2)要推送到私有仓库一定要重命名
docker tag tomcat-top:latest 192.168.150.128:5000/tomcat
(3)推送镜像
docker push 192.168.150.128:5000/tomcat
(4)利用客户机拉取镜像
docker pull 192.168.150.128:5000/tomcat
(5)运行镜像
docker run -d -p 9090:8080 --name tomcat 192.168.150.128/tomcat
(6)用另一条主机访问客户机的搭建的tomcat服务 ,如下图,访问成功