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

转载于:https://www.cnblogs.com/garfieldcgf/p/5657284.html

web项目docker化的两种方法相关推荐

  1. SAP采购订单抬头、行项目屏幕增强的两种方法

    对SAP系统中采购订单抬头进行屏幕增强,在抬头上增加了几个customer fields,但是实现方法有点怪,是一个Z report程序,其下创建了一个屏幕,屏幕中放的就是这几个customer fi ...

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

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

  3. python入门小项目-判断闰年的两种方法(含代码示例)

    每当问到今年是不是闰年都先要思考一下再给出回答,一个年份的判断还好,多个问起来就得想一会了,虽然在网上也可以查,但在这里,还是和大家分享下用哪个Python怎么去帮我们快速做判断. 我们先搞清楚什么是 ...

  4. Docker加速器的两种方法

    Docker 加速器 使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验.因此 DaoCloud 推出了加速器工 ...

  5. 在Web项目中保存会话的两种方法:Cookie和Session

    Web浏览器是与Web服务器之间的会话是一个不保持的会话,浏览器发起请求,建立会话,获得结果后,会话就不在了.然而,在涉及到用户登录Web项目中,开发人员必须有一种方法,区分用户登录前后的状态,以便对 ...

  6. Java运行非Web的Springboot项目(测试类或启动主类两种方法)

    Java运行非Web的Springboot项目(测试类或启动主类两种方法) 前言 一.创建打开一个Springboot项目 二.运行项目 1.Test测试类运行 2.启动主类运行 三.持续运行不停止( ...

  7. java web ip_详解Java Web如何限制访问的IP的两种方法

    前一阵子因为在做项目时碰到了这个功能,现在好好总结一下,至于为什么要限制IP访问,我就不多说了.然后百度了一下,现在主要有两种方式去限制IP访问,第一种是最简单的方便的,第二种是通过过滤器来限制访问. ...

  8. 014day(h5的发展史,h5的兼容,h5的语法,h5的语义化,h5的常用标记,百分比下字体居中的两种方法,video视频文件,audio音频文件,

    一.h5的发展史 1.HTML5草案的前身名为 Web Applications 1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的 HTML 工作团队. HTML 5 的 ...

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

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

  10. 解决vue项目eslint校验 Do not use ‘new‘ for side effects 的两种方法

    解决vue项目eslint校验 Do not use 'new' for side effects 的两种方法 参考文章: (1)解决vue项目eslint校验 Do not use 'new' fo ...

最新文章

  1. android调试——教你用dumpsys命令调试
  2. 托管节点池助力用户构建稳定自愈的 Kubernetes 集群
  3. Lis(bzoj 3532)
  4. 64位ubuntu 12.04编译linux内核提示openssl/opensslv.h文件缺失
  5. 文档词频矩阵_论文理解:从词嵌入到文档距离
  6. UML该元素的行为为基础的元素
  7. 我喜欢的一首歌--《幸福的瞬间》
  8. 220万电商人竞相参与,阿里巴巴认证解决企业人才难题
  9. linux嵌入式6818,嵌入式ARM实验箱(FS_6818M4)_华清远见研发中心
  10. VSCode中值得推荐的11个摸鱼插件
  11. 2020年黑苹果硬件配置推荐
  12. Word题库转成Excel题库的方法
  13. 第一章 tooltips自定义
  14. 用友BIP为企业降低创新壁垒,加速智能化进程
  15. PRi——自行车码表
  16. Hive综合应用案例——用户学历查询
  17. FPGA入门实验-基于状态机实现4位共阴极数码管显示超声波模块读数
  18. 在ros中使用glog
  19. Laplace算子和Laplacian矩陣
  20. pmp考试是什么?有没有含金量?值得考吗?(附2023 年考试时间、备考资料)

热门文章

  1. 【转】Java多线程面试问题集锦
  2. js opener 的使用
  3. CSS布局:让页脚始终保持底部的方法
  4. 免费的分区软件MiniTool Partition Wizard Free
  5. Mysql数据库的mysql Schema 究竟有哪些东西 手工注入的基础要领
  6. 纯CSS实现的风车转动效果特效演示
  7. [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)
  8. 网络爬虫的基本原理(一)
  9. css设置自适应屏幕高度
  10. panel items 添加指定位置_通过gitlab-ci自动添加prometheus业务监控