dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
家想想,Nginx,tomcat,mysql 这些镜像都是哪里来的?官方能写,我们不能写吗?
我们要研究自己如何做一个镜像,而且我们写的微服务项目以及 springboot 打包上云部署,Docker就是最方便的。
微服务打包成镜像,任何装了Docker的地方,都可以下载使用,极其的方便。
流程:开发应用=>DockerFile=>打包为镜像=>上传到仓库(私有仓库,公有仓库)=> 下载镜像 => 启动 运行。
还可以方便移植!
构建步骤:
1、编写DockerFile文件
2、docker build 构建镜像
3、docker run
实战测试
CentOS
官方默认的 CentOS 的情况不支持 vim 和 ifconfig 指令
我们自己构建一个支持这些指令的镜像
步骤:
- 将 JDK 和 tomcat 安装的压缩包拷贝到自己放的地方(我个人放的位置不当就放在了src里面)
- 用的是(jkd1.8与tomcat7.047)
2.新建一个 Dockerfile 文件
FROM centos
MAINTAINER xiaomi<test@qq.com>
#把宿主机当前上下文的read.txt拷贝到容器/usr/local/路径下
COPY read.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-7.0.47.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#变量
ENV MYPATH /usr/local
#设置工作访问时候的WORKDIR路径,登录落脚点
WORKDIR $MYPATH
#配置java与tomcat环境变量
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-7.0.47
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.47
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-7.0.47/bin/startup.sh" ]
# CMD ["/usr/local/apache-tomcat-7.0.47/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-7.0.47/bin/startup.sh && tail -F /usr/local/apache-tomcat-7.0.47/bin/logs/catalina.out
构建镜像:
docker build -t diytomcat .
在此目录下默认构建 Dockerfile 文件,所以不需要带上文件名
启动:
docker run -d -p 9090:8080 --name diytomcat -v /home/build/tomcat/test:/usr/local/apache-tomcat-7.0.47/webapps/test -v /home/build/tomcat/logs/:/usr/local/apache-tomcat-7.0.47/logs --privileged=true diytomcat
备注:Docker挂载主机目录Docker访问出现cannot open directory Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
看到这句就已经在里面运行了
访问localhost:9090就可以看到tomcat的原界面
那怎么样可以创建自己属于的tomcat呢?
1.docker exec -it CONTAINER ID /bin/bash
2.ls 找到 apache-tomcat-7.0.47
cd apache-tomcat-7.0.47/
3.再次寻找conf cd到 conf/
4.vi web.xml 就会看到原界面的源码
翻到最下面
5.然后再次回到cd apache-tomcat-7.0.47/
6.ls 寻找到webapps
7.找到ROOT 进入
8.创建一个a.jsp
9.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
</head>
<body>
Hello World!<br/>
<% System.out.println("-------my docker tomcat-------");%>
</body>
</html>
10.exit; 退出
11.重新运行