任务:用Dockerfile来制作contos镜像,再创建一个容器可实现的功能:使用局域网yum源安装nfs,并完成挂载、自动启动tomcat服务
步骤:pull一个centos的基础镜像,使用局域网搭建的yum源,添加tomcat压缩包,在dockerfile中需要安装nfs-client,配置容器启动入口命令(dockerfile中的CMD),能够成功构建镜像,并且基于这个镜像启动的容器,能够自动启动tomcat服务,完成nfs的挂载。
注:已在宿主机上安装nfs,实现挂载,现将docker容器中的某个目录挂载到本地
1、 关闭防火墙、selinux
2、 在Docker Hub上查看可下载的镜像
3、创建目录存放Dockerfile:
4、进入目录:
5、复制tomcat包:cp /usr/local/tomcat/apache-tomcat-8.5.51.tar.gz apache-tomcat-8.5.51.tar.gz
复制jdk包:cp /home/spring/download/ jdk-8u161-linux-x64.tar.gz jdk-8u161-linux-x64.tar.gz
复制本地宿主机的yum配置文件:cp /etc/yum.repos.d/CentOS-Base.repo CentOS-Base.repo
6、编写Dockerfile:(注意jdk解压后的文件名会改变)
FROM centos:centos7
ADD ./CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum clean all
RUN yum repolist
RUN yum -y install nfs-utils
ADD ./apache-tomcat-8.5.51.tar.gz /usr/local
ADD ./jdk-8u161-linux-x64.tar.gz /usr/lib/
ENV JAVA_HOME /usr/lib/jdk1.8.0_161
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.51
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080
ENTRYPOINT ["/usr/local/apache-tomcat-8.5.51/bin/catalina.sh","run"]
注解:
FROM centos:centos7 拉取/安装镜像
ADD ./ CentOS-Base. repo /etc/yum.repos.d/ CentOS-Base.repo 复制配置文件
RUN yum clean all 清除所有缓存
RUN yum repolist 查看已安装的yum源
RUN yum -y install nfs-utils 安装nfs
ADD ./ apache-tomcat-8.5.51.tar.gz /usr/local/ 复制并解压缩tomcat到容器
ADD ./jdk-8u161-linux-x64.tar.gz /usr/lib/ 复制并解压缩jdk到容器
ENV JAVA_HOME /usr/lib/ jdk1.8.0_161 设置tomcat和jdk环境变量
ENV CATALINA_HOME /usr/local/ apache-tomcat-8.5.51
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080 把容器的8080端口映射到宿主机
ENTRYPOINT [“/usr/local/tomcat-8.5.51/bin/catalina.sh”, ”run”] 设置tomcat的启动
在这里不能运行startup.sh,因为脚本执行完毕后会自动进入后台模式,而docker容器必须有前台运行的应用,否则容器会直接挂掉,所以采用这种方式。
7、构建镜像:docker build –t s/centos: 7-1 .
8、查看镜像:docker images
9、启动容器:docker run –id --name test_centos –p 8081:8080 –v /mnt: /mnt s/centos: 7-1
10、查看挂载是否成功
11、查看tomcat能否连接