• 基于Dockerfile制作tomcat镜像


    Docker 概述:

      在前面的例子中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一种文件或脚本,我们把想执行的操作以命令的方式写入其中,然后让 docker 读取并分析、执行,那么重复构建、更新将变得很方便,所以Dockerfile 就此诞生了

    常用参数:

    • FROM 命令。用法, FROM <image>:<tag>。 FROM 命令告诉 docker 我们构建的镜像是以哪个(发行版)镜像为基础的
    • RUN 命令。用法 RUN 。 RUN 后面接要执行的命令,比如,我们想在镜像中安装 vim,只需在
    • Dockfile 中写入 RUN yum install -y vim
    • ENV 命令。用法,ENV 。 ENV 命令主要用于设置容器运行时的环境变量
    • ADD 命令。用法, ADD 。 ADD 主要用于将宿主机中的文件添加到镜像中

    基于 dockerfile 制作 tomcat 镜像

    • 首先建一个目录构建我们的环境。
    1
    2
    [root@localhost ~]# mkdir tomcat_centos
    [root@localhost ~]# cd tomcat_centos
    • 上传 tomcat 和 jdk 到该目录下。
    1
    2
    [root@localhost tomcat_centos]# ls
    apache-tomcat-7.0.54.tar.gz jdk-7u65-linux-x64.tar.gz
    • 编辑 Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@localhost tomcat_centos]# vim Dockerfile
    FROM centos:1
    MAINTAINER from bistros <bistros@163.com>
    #copy jdk and tomcat into image
    ADD ./apache-tomcat-7.0.54.tar.gz /root
    ADD ./jdk-7u65-linux-x64.tar.gz /root
    #set environment variable
    ENV JAVA_HOME /root/jdk1.7.0_65
    ENV PATH $JAVA_HOME/bin:$PATH
    #define entry point which will be run first when the container starts up
    ENTRYPOINT /root/apache-tomcat-7.0.54/bin/startup.sh && tail -F /root/apache-tomcat-
    7.0.54/logs/catalina.out
    • 构建镜像
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [root@localhost tomcat_centos]# docker build -t bistros/tomcat:centos .
    Sending build context to Docker daemon 151.3 MB
    Step 1 : FROM centos:1
    ---> 4a7667a30862
    Step 2 : MAINTAINER from b 大专栏  基于Dockerfile制作tomcat镜像istros <bistros@163.com>
    ---> Running in 68bf1a959d26
    ---> fcf74efba621
    Removing intermediate container 68bf1a959d26
    Step 3 : ADD ./apache-tomcat-7.0.54.tar.gz /root
    ---> 66cddab1de86
    Removing intermediate container f0b727f5be51
    Step 4 : ADD ./jdk-7u65-linux-x64.tar.gz /root
    ---> e5bb29fe10f6
    Removing intermediate container b26f642c67ac
    Step 5 : ENV JAVA_HOME /root/jdk1.7.0_65
    ---> Running in dfd83d97c8ed
    ---> e434fbfdf162
    Removing intermediate container dfd83d97c8ed
    Step 6 : ENV PATH $JAVA_HOME/bin:$PATH
    ---> Running in 2233e413bb0d
    ---> 6a2c544ad3c2
    Removing intermediate container 2233e413bb0d
    Step 7 : ENTRYPOINT /root/apache-tomcat-7.0.54/bin/startup.sh && tail -F /root/apache-tomcat-
    7.0.54/logs/catalina.out
    ---> Running in 8d58b19e8ad7
    ---> c0c55ad98c79
    Removing intermediate container 8d58b19e8ad7
    Successfully built c0c55ad98c79
    • -t 选择指定生成镜像的用户名,仓库名和 tag
    • –rm=true 指定在生成镜像过程中删除中间产生的临时容器。

    查看新产生的镜像

    1
    2
    3
    [root@localhost tomcat_centos]# docker images bistros/tomcat:centos
    REPOSITORY TAG IMAGE ID CREATED SIZE
    bistros/tomcat centos c0c55ad98c79 About a minute ago 502.7 MB

    运行镜像

    • 手动映射主机端口启动
    1
    2
    3
    4
    5
    6
    7
    8
    [root@localhost tomcat_centos]# docker run -d -p 8090:8080 bistros/tomcat:centos
    65a0f0910f174132e009ca686b283c0dc58df0dd3000c144cd4c175f2078de37
    [root@localhost tomcat_centos]# docker ps -a
    CONTAINER ID IMAGE COMMAND
    CREATED STATUS PORTS
    NAMES5 / 5
    65a0f0910f17 bistros/tomcat:centos "/bin/sh -c '/root/ap" 50 seconds ago
    Up 48 seconds 0.0.0.0:8090->8080/tcp pensive_kare
    • -p 指定主机 80 端口与容器 8080 端口进行绑定
    • -d 指定容器运行后与当前 tty 分离,后台运行
    • 65a0 是镜像的 ID 前 4 位。

    通过 http://宿主机 IP:8090,即可看见我们熟悉的 tomcat 首页了。

    • 自动映射主机端口的启动
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@localhost tomcat_centos]# docker run -d -p 8080 --name tomcat
    bistros/tomcat:centos
    2f20477608f8d335a3424acd6f54ad5900db86bdbf48af2ea2777159a7646566
    [root@localhost tomcat_centos]# docker ps -a
    CONTAINER ID IMAGE COMMAND
    CREATED STATUS PORTS
    NAMES
    2f20477608f8 bistros/tomcat:centos "/bin/sh -c '/root/ap" 8 seconds ago
    Up 6 seconds 0.0.0.0:32768->8080/tcp tomcat

    这样就要通过 http://宿主机 IP:32768 访问了。

  • 相关阅读:
    PTA中如何出Java编程题?
    20145120黄玄曦 《java程序设计》 寒假学习总结
    java EE技术体系——CLF平台API开发注意事项(1)——后端开发
    相信自己、相信未来—2017半年总结
    API生命周期第三阶段:API实施:使用swagger codegen生成可部署工程,择取一个作为mock service
    API生命周期第三阶段:API实施模式,以及结合swagger和项目现状的最佳模式
    API生命周期第二阶段——设计:如何设计API(基于swagger进行说明)
    API生命周期第二阶段——设计:采用swagger进行API描述、设计
    API生命周期
    API经济时代的思考(转载目的:为之后写API-first模式的生命周期治理做准备)
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12366273.html
Copyright © 2020-2023  润新知