• web项目docker化的两种方法


    标题所讲的两种方法其实就是创建docker镜像的两种方法

      第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可

      第二种:编写dockerfile,将需要的镜像一层层叠加上去,比如我们要部署项目,可以先下载一个ubuntu基础镜像,然后叠加jdk,然后tomcat,然后项目

    这两种方法我都试过,区别在于,第二种比较体现docker的镜像叠加特性,第一种到最终只有一层镜像.

      先讲第二种吧,我之前的文章有提到过dockerfile的编写,这边直接给出简单的dockerfile实例和运行命令.当然编写之前要先下一个基础镜像,我们选择ubuntu:运行命令

    docker search ubuntu

      注意:也可以直接运行dockerfile文件,指定的基础镜像须在仓库中存在

      得到如下结果:

    NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    ubuntu                            Ubuntu is a Debian-based Linux operating s...   4241      [OK]       
    ubuntu-upstart                    Upstart is an event-based replacement for ...   65        [OK]       
    rastasheep/ubuntu-sshd            Dockerized SSH service, built on top of of...   29                   [OK]
    torusware/speedus-ubuntu          Always updated official Ubuntu docker imag...   26                   [OK]
    ubuntu-debootstrap                debootstrap --variant=minbase --components...   25        [OK]       
    nickistre/ubuntu-lamp             LAMP server on Ubuntu                           8                    [OK]
    nuagebec/ubuntu                   Simple always updated Ubuntu docker images...   6                    [OK]
    nimmis/ubuntu                     This is a docker images different LTS vers...   5                    [OK]
    nickistre/ubuntu-lamp-wordpress   LAMP on Ubuntu with wp-cli installed            5                    [OK]
    maxexcloo/ubuntu                  Docker base image built on Ubuntu with Sup...   2                    [OK]
    jordi/ubuntu                      Ubuntu Base Image                               1                    [OK]
    admiringworm/ubuntu               Base ubuntu images based on the official u...   1                    [OK]
    darksheer/ubuntu                  Base Ubuntu Image -- Updated hourly             1                    [OK]
    life360/ubuntu                    Ubuntu is a Debian-based Linux operating s...   0                    [OK]
    esycat/ubuntu                     Ubuntu LTS                                      0                    [OK]
    lynxtp/ubuntu                     https://github.com/lynxtp/docker-ubuntu         0                    [OK]
    widerplan/ubuntu                  Our basic Ubuntu images.                        0                    [OK]
    datenbetrieb/ubuntu               custom flavor of the official ubuntu base ...   0                    [OK]
    teamrock/ubuntu                   TeamRock's Ubuntu image configured with AW...   0                    [OK]
    ustclug/ubuntu                    ubuntu image for docker with USTC mirror        0                    [OK]
    webhippie/ubuntu                  Docker images for ubuntu                        0                    [OK]
    ubuntucore/jenkins-ubuntu         Jenkins image based on ubuntu                   0                    [OK]
    dorapro/ubuntu                    ubuntu image                                    0                    [OK]
    konstruktoid/ubuntu               Ubuntu base image                               0                    [OK]
    uvatbc/ubuntu                     Ubuntu images with unprivileged user            0                    [OK]

      选择星级最高的第一个,也可以选择其他,运行:

    docker pull ubuntu

      等待下载完成后,开始写dockerfile:

    # Version: 1.0.0
    # Create Time: 2015-10-16 09:04
    # Author: garfield
    # Description: 在最新版本的ubuntu系统中安装jdk,构建可执行java的环境
    
    FROM ubuntu:latest 
    MAINTAINER garfield "garfield@163.com"
    
    # 将jdk安装压缩包解压到/home/jdk1.8.0_51
    ADD jdk-8u51-linux-x64.tar.gz /home/
    
    # 安装中文语言包
    #RUN locale-gen zh_CN.UTF-8
    
    # 设置java环境变量
    ENV JAVA_HOME /home/jdk1.8.0_51
    ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    
    # 设置语言环境变量
    ENV LANG zh_CN.UTF-8
    ENV LANGUAGE zh_CN:zh

       如下图显示,这样放好:

      

      然后运行命令:

    docker build -t 自定义名称 路径

      就会开始构建镜像,这样一个拥有基础镜像和jdk的镜像就做好了.

      然后tomcat和web项目的安装同上即可.

      接下来将第一种部署方法,启动镜像时需要挂载目录到本地:

    docker run -i -t -v /root/software/:/mnt/software/ 53a0016cd0ba /bin/bash

      进入系统内部:

    docker exec -t -i 53a0016cd0ba /bin/bash

      可以看到:

    root@53a0016cd0ba:/tmp/mesos-sandbox# 

      现在就可以开始安装软件了并设置环境变量了,因为进入的系统也是一个普通的linux运行环境,所以这里不赘写具体的安装和环境变量配置了

      最后将web项目部署到tomcat目录下之后,编写一个启动脚本,准备在容器启动的时候调用即可,看一下我的镜像实例吧:

    REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
    192.168.161.2:5000/mq_app              latest              f59fdf14b64f        3 months ago        381.8 MB
    mesoscloud/marathon                    latest              e4396ffc8383        3 months ago        561.6 MB
    yfix/jenkins-master                    latest              aee26ee6e30b        3 months ago        1.262 GB
    python                                 latest              70c16d34e4c8        3 months ago        689.6 MB
    webcenter/activemq                     latest              87fdf4718a31        3 months ago        446.3 MB
    haproxy                                latest              26df93f0d499        3 months ago        139.1 MB
    192.168.161.2:5000/tomcat              latest              e3de4da2f84a        3 months ago        357.4 MB
    redis                                  latest              4f5f397d4b7c        4 months ago        177.6 MB

      其中第一个就是我制作的web项目了,应该算蛮清晰的了吧.做得比较久了有些详情也忘了,有问题请见谅...

      对了制作后启动除了前面说的启动脚本之外,还需要设置端口映射,也就是-p参数(也可以设置本地网络模式,不展开了)这样就可以访问了...

  • 相关阅读:
    ubuntu下mysql的安装
    useradd和adduser的区别
    C和指针之学习笔记(6)
    C和指针之学习笔记(5)
    C和指针之学习笔记(4)
    Centos 7搭建Gitlab服务器超详细
    .NET Core sdk和runtime区别
    .NET平台历程介绍
    GitLabCICD
    Jenkins+gitlab+msbuild
  • 原文地址:https://www.cnblogs.com/garfieldcgf/p/5657284.html
Copyright © 2020-2023  润新知