1、案例描述
下面将从一个CentOS的基础镜像开始,安装JDK和Tomcat 环境,并完成一个Web 应 用的部署。整个过程通过一个 Dockerfile 文件来描述。通过该Dockerfile文件来构建一个镜 像,并创建一个容器来运行Web应用。
2、试验介质
下表列举了本实战需要用到的实验介质
介质 | 说明 |
操作系统 CentOS | 在编辑Dockerfile文件时,使用FROM关键字指定CentOS为基础镜像 |
jdk-8u144-linux-x64.tar.gz | 由于该案例需要用Tomcat作为应用服务器,因此需要在CentOS中安装 JDK环境可以从Oracle的官方网站下载 |
Apache Tomcat | Java的Web 服务器,可以从Apache 网站下载 |
MyDemoWeb.war | JavaWeb应用 |
3、操作步骤
(1)自定义一个目录,里面创建Dockerfile文件
[root@centos7-5 ~]# mkdir -v /a
mkdir: 已创建目录 "/a"
[root@centos7-5 ~]# touch /a/Dockerfile
(2)在Dockerfile文件里面写入以下内容
[root@centos7-5 ~]# vim /a/Dockerfile
FROM centos
MAINTAINER zhangsan 123456@126.com
RUN mkdir /root/training
RUN mkdir /root/tools
COPY jdk-8u144-linux-x64.tar.gz /root/tools
RUN tar zxvf /root/tools/jdk-8u144-linux-x64.tar.gz -C /root/training/
ENV JAVA_HOME /root/training/jdk1.8.0_144
ENV PATH $JAVA_HOME/bin:$PATH
COPY apache-tomcat-8.5.93.tar.gz /root/tools
RUN tar zxvf /root/tools/apache-tomcat-8.5.93.tar.gz -C /root/training/
COPY MyDemoWeb.war /root/training/apache-tomcat-8.5.93/webapps
ENTRYPOINT ["/root/training/apache-tomcat-8.5.93/bin/catalina.sh","run"]
- 第01行:指定基础镜像为 CentOS。
- 第02行:执行维护者的信息。
- 第03行:在CentOS中创建一个“/root/training”目录。
- 第04行:在CentOS中创建一个“/root/tools”目录。
- 第05行:将宿主机上的JDK安装文件复制到 CentOS的“/root/tools”目录下。
- 第06行:将JDK 安装文件解压缩到 CentOS 的“/root/training”目录下。
- 第07行:在CentOS中设置JAVAHOME的环境变量。
- 第08行:在CentOS中的PATH 路径中添加Java的路径。
- 第09行:将宿主机上Tomcat安装文件复制到CentOS的“/root/tools”目录下。
- 第10行:将Tomcat安装文件解压缩到 CentOS的“/root/training”目录 下。
- 第11行:将宿主机上的MyDemoWeb.war复制到CentOS的Tomcat的 webapps目录下。
- 第12行:启动容器时运行Tomcat。
(3)使用“tree”命令查看当前目录结构
[root@centos7-5 a]# tree
.
├── apache-tomcat-8.5.93.tar.gz
├── Dockerfile
├── jdk-8u144-linux-x64.tar.gz
└── MyDemoWeb.war
(4)使用“docker build”命令编译 Dockerfile 文件,并通过参数“-t”指定镜像的 标签名称提示,在这条“docker build”命令的最后有一个点(.)。
[root@centos7-5 a]# docker build -t mywebapp .
(5)最后可以看到构建镜像成功
Removing intermediate container 6b101b1d5f85
---> 1d1350c0f1ee
Step 11/12 : COPY MyDemoWeb.war /root/training/apache-tomcat-8.5.93/webapps
---> df58afd371f8
Step 12/12 : ENTRYPOINT ["/root/training/apache-tomcat-8.5.93/bin/catalina.sh","run"]
---> Running in 93ca2129a7b6
Removing intermediate container 93ca2129a7b6
---> f32d1f697f07
Successfully built f32d1f697f07
Successfully tagged mywebapp:latest
(6)执行“docker images”命令查看新构建的镜像
[root@centos7-5 a]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mywebapp latest f32d1f697f07 33 seconds ago 819MB
(7)使用“docker run”命令基于mywebapp 的镜像创建容器
[root@centos7-5 a]# docker run -d --name my_tomcat -p 1234:8080 mywebapp
78da64c1a60293f0ada58d73dd2adca1075c483f41b6a4ab3c15cc76b38330fe
- docker run:创建一个新容器;
- -d:后台运行容器,并返回容器ID;
- --name:设置容器名称;
- -p:指定端口映射,将本地宿主机的1234端口映射到容器的8080端口;
- mywebapp:基于mywebapp镜像创建容器;
(8)使用“Docker ps ”查看容器
[root@centos7-5 a]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
78da64c1a602 mywebapp "/root/training/apac…" 8 minutes ago Up 8 minutes 0.0.0.0:1234->8080/tcp, :::1234->8080/tcp my_tomcat
(9)使用浏览器访问“http://192.168.23.205:1234/MyDemoWeb/”就可以正常访问应用了