zoukankan      html  css  js  c++  java
  • 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件

    从零开始构建一个centos+jdk7+tomcat7的镜像文件

    centos7系统下docker运行环境的搭建

    准备centos基础镜像

    docker pull centos
    或者直接下载我准备好的镜像
    docker pull registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1

    准备jdk7和tomcat7安装包

    • 创建工作目录, mkdir -p /z/docker
    • 准备下载jdk7的tar.gz包http://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
    • 解压到目录/z/docker下, 并重命名为jdk
    • 准备下载tomcat7的tar.gz包http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
    • 解压到目录/z/docker下, 并重命名为tomcat
    • 删掉jdk文件夹下多余文件, 降低build的镜像大小
    复制代码
    rm -rf /z/docker/jdk/*src.zip 
        /z/docker/jdk/lib/missioncontrol 
        /z/docker/jdk/lib/visualvm 
        /z/docker/jdk/lib/*javafx* 
        /z/docker/jdk/jre/lib/plugin.jar 
        /z/docker/jdk/jre/lib/ext/jfxrt.jar 
        /z/docker/jdk/jre/bin/javaws 
        /z/docker/jdk/jre/lib/javaws.jar 
        /z/docker/jdk/jre/lib/desktop 
        /z/docker/jdk/jre/plugin 
        /z/docker/jdk/jre/lib/deploy* 
        /z/docker/jdk/jre/lib/*javafx* 
        /z/docker/jdk/jre/lib/*jfx* 
        /z/docker/jdk/jre/lib/amd64/libdecora_sse.so 
        /z/docker/jdk/jre/lib/amd64/libprism_*.so 
        /z/docker/jdk/jre/lib/amd64/libfxplugins.so 
        /z/docker/jdk/jre/lib/amd64/libglass.so 
        /z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so 
        /z/docker/jdk/jre/lib/amd64/libjavafx*.so 
        /z/docker/jdk/jre/lib/amd64/libjfx*.so
    复制代码

    进入/z/docker目录, 在当前目录下创建Dockerfile文件

    复制代码
    cd /opt/docker
    vi Dockerfile

    #插入以下内容
    #使用的基础镜像
    FROM centos
    #作者信息
    MAINTAINER chenxiangxiang "1915592195@qq.com"

    #创建目录
    RUN mkdir -p /opt/docker/jdk/jdk1.8.0_144
    #把当前目录下的jdk文件夹添加到镜像
    ADD jdk /opt/docker/jdk/jdk1.8.0_144

    #创建tomcat目录
    RUN mkdir -p /opt/docker/tomcat/apache-tomcat-7.0.81
    #把当前目录下的tomcat文件夹添加到镜像
    ADD tomcat /opt/docker/tomcat/apache-tomcat-7.0.81

    #添加环境变量
    ENV JAVA_HOME /opt/docker/jdk/jdk1.8.0_144
    ENV CATALINA_HOME /opt/docker/tomcat/apache-tomcat-7.0.81
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

    #暴露8080端口
    EXPOSE 8080

    #启动时运行tomcat
    CMD ["/opt/docker/tomcat/apache-tomcat-7.0.81/bin/catalina.sh","run"]

    复制代码

    开始构建docker镜像文件

    docker build -t repos_local/centos-jdk7-tomcat7:0.0.1 .
    -t 设置tag名称, 命名规则registry/image:tag
    . 表示使用当前目录下的Dockerfile文件

    等待构建完成, 不出意外的话, 执行docker images将会得到以下结果

    [root@localhost docker]# docker images
    REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
    repos_local/centos-jdk7-tomcat7                      0.0.1               2c5efe7056ce        4 minutes ago       511.7 MB

    repos_local/centos-jdk7-tomcat7镜像已经构建好了, 从这个镜像启动容器, 并配置好端口, 就能直接在浏览器上看到tomcat默认界面了

    启动centos-jdk7-tomcat7容器

    docker run -d -p 8081:8080 --name test-tomcat repos_local/centos-jdk7-tomcat7:0.0.1
    -d 后台运行
    -p 宿主机port:容器port 端口映射
    --name 容器名称, 可以通过容器名称对容器操作

    如果系统没禁用防火墙的话, 可能需要开放8081端口

    复制代码
    #直接执行命令, 开放端口号(重启后可能失效)
    iptables -A INPUT -ptcp --dport 8081 -j ACCEPT
    ##或者
    #直接修改iptables, 重启后不会失效
    vi /etc/sysconfig/iptables
    #插入以下内容
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
    重启iptables服务
    service iptables restart
    复制代码

    centos7下可以直接使用firewall-cmd来开放端口

    #开放8081端口  permanent为永久开放
    firewall-cmd --zone=public --add-port=8081/tcp --permanent
    #重新读取配置
    firewall-cmd --reload
    #查看全部开放端口
    firewall-cmd --list-all

    如果提示FirewallD is not running
    执行systemctl start firewalld.service, 启动firewalld服务

    直接在浏览器访问centos7系统的8081端口, 已经能看到tomcat的默认界面了

    查看container容器的运行状态

    [root@localhost docker]# docker ps
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
    1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   3 minutes ago       Up 3 minutes        0.0.0.0:8081->8080/tcp   test-tomcat

    现在的容器状态为Up, 运行中, 如何停止一个运行中的容器? 运行docker stop命令

    复制代码
    [root@localhost docker]# docker ps -a
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                       PORTS               NAMES
    1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Exited (143) 3 minutes ago                       test-tomcat
    [root@localhost docker]# docker start test-tomcat
    test-tomcat
    [root@localhost docker]# docker ps -a
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
    1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Up 3 seconds        0.0.0.0:8081->8080/tcp   test-tomcat
    [root@localhost docker]# docker stop test-tomcat
    test-tomcat
    [root@localhost docker]# docker ps -a
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                       PORTS               NAMES
    1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Exited (143) 4 seconds ago                       test-tomcat
    复制代码

    以上命令, 把一个容器从退出状态->运行中->退出状态

    如何强制删除一个运行中的容器?

    复制代码
    [root@localhost docker]# docker ps -a
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
    1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Up 5 seconds        0.0.0.0:8081->8080/tcp   test-tomcat
    [root@localhost docker]# docker rm -f test-tomcat
    test-tomcat
    [root@localhost docker]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost docker]# 
    复制代码

    docker rm 命令删除一个Exited状态的容器, docker rm -f 强制删除一个运行中的容器

    到这里, 在centos7系统下构建docker镜像文件已经成功

  • 相关阅读:
    How To Build CyanogenMod Android for smartphone
    CentOS安装Code::Blocks
    How to Dual boot Multiple ROMs on Your Android SmartPhone (Upto Five Roms)?
    Audacious——Linux音乐播放器
    How to Dual Boot Multiple ROMs on Your Android Phone
    Everything You Need to Know About Rooting Your Android Phone
    How to Flash a ROM to Your Android Phone
    什么是NANDroid,如何加载NANDroid备份?
    Have you considered compiled a batman-adv.ko for android?
    BATMAN—Better Approach To Mobile Adhoc Networking (B.A.T.M.A.N.)
  • 原文地址:https://www.cnblogs.com/cxxjohnson/p/8412828.html
Copyright © 2011-2022 走看看