设为首页 收藏本站
查看: 1101|回复: 0

[经验分享] Docker个人学习总结

[复制链接]

尚未签到

发表于 2015-4-17 09:29:01 | 显示全部楼层 |阅读模式
  最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码。
  刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。比如:
  1、Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多
  2、Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
  3、更快速的交付和部署、更轻松的迁移和扩展
  等等……
  因为我是做java开发的,我们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了,也很简单。。。当时我就不懂Docker有什么好处,一度以为对我们现有的模式没用。知道昨天跟其他人交流我才弄明白一个问题,那就是应用隔离与资源独立!!
DSC0000.png
  这是我刚画的一个图,现在我们的模式是A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。所以要这时就要做到资源独立,一个应用一份资源,现在要做到这样只有做成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?我是觉得麻烦。如果有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!
  
  下面是我的Dockerfile,,,,这个主要是供我自己以后回忆的。。



FROM ubuntu
MAINTAINER Rafael lzj
# 更新源,安装ssh server
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y openssh-server
RUN apt-get install unzip
RUN mkdir -p /var/run/sshd
# 设置root ssh远程登录密码为123456
RUN echo "root:123456" | chpasswd
# setup tomcat
RUN mkdir /opt/bag
COPY tomcat  /opt/bag/
RUN perl -p -i -e "s/8080/5880/g" /opt/bag/conf/server.xml
# install example app on wildfy
COPY bag.war /opt/bag/webapps/bag/
RUN unzip /opt/bag/webapps/bag/bag.war -d /opt/bag/webapps/bag/
# setup maven
RUN mkdir /opt/maven
COPY apache-maven-3.2.2-bin.zip /opt/maven/
RUN unzip /opt/maven/apache-maven-3.2.2-bin.zip -d /opt/maven/
# setup Java
RUN mkdir /opt/java
COPY jdk-7u75-linux-x64.gz /opt/java/
# change dir to Java installation dir
WORKDIR /opt/java/
#RUN apt-get install -y maven
RUN tar -zxf jdk-7u75-linux-x64.gz
# setup nvironment variables
RUN update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.7.0_75/bin/javac 100
RUN update-alternatives --install /usr/bin/java java /opt/java/jdk1.7.0_75/bin/java 100
RUN update-alternatives --display java
RUN java -version
# Expose the ports we're interested in
EXPOSE 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.out
CMD /opt/bag/bin/startup.sh && /usr/sbin/sshd -D
# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行
#ENTRYPOINT service tomcat7 start

  然后创建镜像,为了提交到私有仓库所以如此命名:



docker build -t 192.168.1.104:5000/bag .

  然后运行:



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
  下面这幅图是我找到的,个人感觉非常好,大家学习后可以把这幅图的流程都走通就差不多啦,至于对这幅图的理解这里我就不说了
DSC0001.png
  
  好了,这就是我的一些收货,希望对大家有所帮助,纯原创,duang~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-57989-1-1.html 上篇帖子: Docker学习总结之跨主机进行link 下篇帖子: [译] 第二十一天: Docker
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表