2.3、Dockerfile实战案例精讲

1、案例描述

    下面将从一个CentOS的基础镜像开始,安装JDK和Tomcat 环境,并完成一个Web 应 用的部署。整个过程通过一个 Dockerfile 文件来描述。通过该Dockerfile文件来构建一个镜 像,并创建一个容器来运行Web应用。

2、试验介质

    下表列举了本实战需要用到的实验介质

介质说明
操作系统 CentOS在编辑Dockerfile文件时,使用FROM关键字指定CentOS为基础镜像
jdk-8u144-linux-x64.tar.gz由于该案例需要用Tomcat作为应用服务器,因此需要在CentOS中安装 JDK环境可以从Oracle的官方网站下载
Apache TomcatJava的Web 服务器,可以从Apache 网站下载
MyDemoWeb.warJavaWeb应用

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/”就可以正常访问应用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值