Docker个人学习总结
最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码。
刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。比如:
1、Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多
2、Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
3、更快速的交付和部署、更轻松的迁移和扩展
等等……
因为我是做java开发的,我们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了,也很简单。。。当时我就不懂Docker有什么好处,一度以为对我们现有的模式没用。知道昨天跟其他人交流我才弄明白一个问题,那就是应用隔离与资源独立!!

这是我刚画的一个图,现在我们的模式是A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。所以要这时就要做到资源独立,一个应用一份资源,现在要做到这样只有做成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?我是觉得麻烦。如果有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!
下面是我的Dockerfile,,,,这个主要是供我自己以后回忆的。。
|
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
29
30
31
32
33
34
35
36
37
38
39
40
41
|
FROM ubuntuMAINTAINER Rafael lzj <386649347@qq.com># 更新源,安装ssh serverRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.listRUN apt-get updateRUN apt-get install -y openssh-serverRUN apt-get install unzipRUN mkdir -p /var/run/sshd# 设置root ssh远程登录密码为123456RUN echo "root:123456" | chpasswd# setup tomcatRUN mkdir /opt/bagCOPY tomcat /opt/bag/RUN perl -p -i -e "s/8080/5880/g" /opt/bag/conf/server.xml# install example app on wildfyCOPY bag.war /opt/bag/webapps/bag/RUN unzip /opt/bag/webapps/bag/bag.war -d /opt/bag/webapps/bag/# setup mavenRUN mkdir /opt/mavenCOPY apache-maven-3.2.2-bin.zip /opt/maven/RUN unzip /opt/maven/apache-maven-3.2.2-bin.zip -d /opt/maven/# setup JavaRUN mkdir /opt/javaCOPY jdk-7u75-linux-x64.gz /opt/java/# change dir to Java installation dirWORKDIR /opt/java/#RUN apt-get install -y mavenRUN tar -zxf jdk-7u75-linux-x64.gz# setup nvironment variablesRUN update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.7.0_75/bin/javac 100RUN update-alternatives --install /usr/bin/java java /opt/java/jdk1.7.0_75/bin/java 100RUN update-alternatives --display javaRUN java -version# Expose the ports we're interested inEXPOSE 8080 5880# Set the default command to run on boot# This will boot WildFly in the standalone mode and bind to all interface#CMD /opt/bag/bin/startup.sh && tail -f /opt/bag/logs/catalina.outCMD /opt/bag/bin/startup.sh && /usr/sbin/sshd -D# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行#ENTRYPOINT service tomcat7 start |
然后创建镜像,为了提交到私有仓库所以如此命名:
|
1
|
docker build -t 192.168.1.104:5000/bag . |
然后运行:
|
1
|
docker run -d -p 8001:8001 -v /home/luzijun/Bag/bag:/opt/Bag/webapps/bag 192.168.1.104:5000/bag |
通过把宿主机上的项目目录挂载到容器里面的tomcat内的webapps目录下,就能做到实时更新了,不过如果是更新的.class文件则需要重启tomcat
下面这幅图是我找到的,个人感觉非常好,大家学习后可以把这幅图的流程都走通就差不多啦,至于对这幅图的理解这里我就不说了

好了,这就是我的一些收货,希望对大家有所帮助
原创地址 http://www.cnblogs.com/I-will-be-different/p/4353597.html
Docker个人学习总结的更多相关文章
- 在Windows环境中开始Docker的学习和体验
研究docker有一段时间了,当然我主要的使用环境还是在Linux中,确实很方便. 但也有不少朋友希望使用Windows来工作学习,这里介绍一下在Windows中如何快速开始Docker的学习和体验吧 ...
- Docker容器学习梳理 - 应用程序容器环境部署
关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...
- Docker容器学习梳理 - 日常操作总结
使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands: attach Attach ...
- docker深入学习
docker深入学习 一.容器的介绍和容器的发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+D ...
- 服务器搭建远程docker深度学习环境
服务器搭建远程docker深度学习环境 本文大部分内容参考知乎文章 Docker+PyCharm快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 Docker Docker ...
- Docker命令学习
今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...
- 有关docker的学习链接
本文是自己搜索的比较好的网上资源,便于有兴趣者查阅. 英文官网 https://docs.docker.com/engine/getstarted/ 中文入门手册 http://www.docker. ...
- Docker技术学习
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1598249 貌似Doc ...
- Docker入门学习
Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...
随机推荐
- underflow 、overflow 下溢和上溢
在strtoull函数返回值中,就提到上溢和下溢的问题,现在把这俩个概念拿出来涨涨见识! 上溢 Overflow 是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数 ...
- mapreduce 模板
/*** * MapReduce Module * @author nele * */ public class ModuleMapReduce extends Configured implemen ...
- jquery 清除动画队列不疑惑
$(this).siblings().stop().fadeTo(200, 0.3); jquery动画存在一个队列, 会把事件产生的动画 放在一个队列中,当来不及执行这些事件队列的时候,会在事件结束 ...
- 什么是SEM?
SEM是Search Engine Marketing的英文缩写,其中文意思就是搜索引擎营销.台湾和香港.澳门也称为搜寻销售,意思都差不多.SEM更多强调的是综合手段在搜索引擎上的企业传播和促进和销售 ...
- AngularJS 使用ngOption实现下拉列表
最近使用到了ngOption实现下拉选择列表,由于需要实现分组等功能,百度了下没有太好的文章,就百度到一篇英文的帖子,按照其中的代码很顺利的搞定了. 本篇根据文中代码,详细讲述下如何实现下拉列表 更多 ...
- CSS3的REM设置字体大小
在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px v ...
- VTK初学一,Pro文件的配置
1. pro文件的配置 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG += qt QT += core gui greate ...
- hdu4751 Divide Groups
This year is the 60th anniversary of NJUST, and to make the celebration more colorful, Tom200 is goi ...
- LYDSY模拟赛day3 涂色游戏
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...
- 【转】Eclipse里项目名有红叉,但是展开后里面又没有红叉叉
Eclipse里项目名有红叉,但是下面的每一个文件都没有红叉 有三种可能: 1:classpath有问题 2:编译级别有问题 3:jar包有问题,我碰过从maven上获取了问题jar包,工程里提示能找 ...