标题所讲的两种方法其实就是创建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参数(也可以设置本地网络模式,不展开了)这样就可以访问了...

web项目docker化的两种方法的更多相关文章

  1. xcode11新项目删除main.storyboard 两种方法

    方法一 心急的童鞋按照老操作完成后再按照如下操作即可 /** 弃用storboard 1.info.plist去除 <key>UIApplicationSceneManifest</ ...

  2. 获取JAVA[WEB]项目相关路径的几种方法

    在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro ...

  3. C#实现Web文件上传的两种方法

    1. C#实现Web文件的上传 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛. 那么使用C#如何实现文件上传的功能呢?下面笔 ...

  4. create-react-app创建项目修改配置项的两种方法

    方法一:eject 打开 package.json ,可以看到eject.运行 npm run eject 可以让由create-react-app创建的项目的配置项暴露出来. { ... " ...

  5. [转]获取JAVA[WEB]项目相关路径的几种方法

    http://blog.csdn.net/yaerfeng/article/details/7297479/ 在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在cl ...

  6. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  7. C# web api 返回类型设置为json的两种方法

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  8. 在Java Web程序中使用监听器可以通过以下两种方法

    之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...

  9. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

随机推荐

  1. Spring Security(10)——退出登录logout

    要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain.当我们指定 ...

  2. 使用 Spark MLlib 做 K-means 聚类分析[转]

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice4/ 引言 提起机器学习 (Machine Lear ...

  3. 【Python@Thread】thread模块

    一.关于Python多线程 Python解释器中可以同时运行多个线程,但是再任意时刻只能有一个线程在解释器运行. Python虚拟机的访问是由全局解锁器(GIL)控制的,由GIL保证同时只有一个线程的 ...

  4. KindeEditor图片上传插件用法

    因业务需要找了款插件 KindeEditor编辑器确认挺好用,但无奈技术有限,上传配置不知,故问度娘! 图片上传对于部分新手来说有时候是一件非常头疼的事,今天来分享一下项目中使用到的这个插件Kinde ...

  5. 2、为Eclipse绑定Tomcat

    1.window→preferences打开属性窗口 2.点击add 3.点击Tomcat6.0 点击next 4.选择tomcat的解压目录和jdk,并点击finish 5.点击ok 6.打开ser ...

  6. [POJ] 1562 Oil Deposits (DFS)

    Oil Deposits Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16655   Accepted: 8917 Des ...

  7. HDU 2064 汉诺塔III(递归)

    题目链接 Problem Description 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘 ...

  8. LeetCode OJ 45. Jump Game II

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  9. 第二次冲刺spring会议(第五次会议)

    [例会时间]2014/5/8 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳奇

  10. @+android:id的一些记录

    在修改Settings模块的APN列表时,遇到了类似标题中的一些写法. 在网上查了一下: 加上android:表示引用android.R.id里面定义的id资源,如果android.R.id里面确实有 ...