美文网首页Docker
我的第一个Docker镜像:tomcat

我的第一个Docker镜像:tomcat

作者: 张四两 | 来源:发表于2016-09-30 10:01 被阅读0次

    之前就做好了,其中遇到些问题,在此归纳总结。
    使用Dockerfile构建一个镜像,其中包含jdk和tomcat,使之可以运行web服务。

    # 在Linux系统中运行命令
    [root@localhost home]# mkdir tomcat-docker
    [root@localhost home]# cd tomcat-docker
    # 把tomcat和jdk放到tomcat-docker目录下
    

    我事先已经把项目war包放在了tomcat的webapps目录下


    目录结构
    [root@localhost tomcat-docker]# touch Dockerfile run.sh
    [root@localhost tomcat-docker]# vim Dockerfile
    # 设置继承的镜像
    FROM ubuntu:14.04
    
    # 创建者信息
    MAINTAINER zytim "zytsayno@gmail.com"
    
    # 设置环境变量,所有操作都是非交互式的
    ENV DEBIAN_FRONTEND noninteractive
    
    # 更改系统的时区设置
    RUN echo "Asia/Shanghai" > /etc/timezone && \
            dpkg-reconfigure -f noninteractive tzdata
    
    # 设置tomcat的环境变量
    ENV CATALINA_HOME /tomcat
    ENV JAVA_HOME /jdk
    
    # 复制tomcat和jdk文件到镜像中
    ADD apache-tomcat /tomcat
    ADD jdk /jdk
    
    # 复制启动脚本至镜像,并赋予脚本可执行权限
    ADD run.sh /run.sh
    RUN chmod +x /*.sh
    RUN chmod +x /tomcat/bin/*.sh
    
    # 暴露接口8091,这是我的tomcat接口,默认为8080
    EXPOSE 8091
    
    # 设置自启动命令
    CMD ["/run.sh"]
    

    编辑 run.sh 脚本

    [root@localhost tomcat-docker]# vim run.sh
    #!/bin/bash
    # 启动tomcat
    exec ${CATALINA_HOME}/bin/catalina.sh run
    

    Dockerfile的各个指令要搞懂,这样有助于自定义镜像。
    然后就可以用这个Dockerfile构建镜像了。

    [root@localhost tomcat-docker]# docker build -t tomcat:test . 
    

    注意后面有个点。
    一般使用这条命令就够了,但有时可能在build的过程中会报错,找不到tomcat或者jdk路径,这事可以在build时用指定Dockerfile路径试试。

    [root@localhost tomcat-docker]# docker build -t tomcat:test1 /home/zyt/tomcat-docker/Dockerfile .
    

    还是注意后面有个点。
    执行build会有Step1,Step2等等一些步骤,稍等一会,如果看到
    Successfully built xxxxxx
    那就证明创建镜像成功了。
    然后创建并跑起容器

    [root@localhost tomcat-docker]# docker run -d -P tomcat:test
    

    -P是随机映射本机端口到容器暴露的端口,这种方法创建的容器重启之后本机端口也可能会发生变化,如要固定映射端口也可以用-p自定义。

    [root@localhost tomcat-docker]# docker run -d -p 11001:8091 tomcat:test
    

    使用 docker ps 命令查看正在运行的容器

    查看正在运行的容器

    如果查看不到有运行的容器,可以使用

    [root@localhost ~]# docker ps -a
    

    查看所有容器,用

     [root@localhost ~]# docker start 容器id
    

    启动对应的容器。
    如果每次启动容器后,容器状态都为Exited,那你可以使用

     [root@localhost ~]# docker logs 容器id 
    

    查看容器启动日志。
    我又碰到这种情况,是由于tomcat启动报错导致的。
    然后就可以通过宿主机的 ip + 端口号 访问tomcat中的应用了。

    相关文章

      网友评论

        本文标题:我的第一个Docker镜像:tomcat

        本文链接:https://www.haomeiwen.com/subject/prmlyttx.html