zoukankan      html  css  js  c++  java
  • 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 ubuntu
    MAINTAINER Rafael lzj <386649347@qq.com>
    # 更新源,安装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

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

    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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 数字黑洞
    Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
  • 原文地址:https://www.cnblogs.com/xingzc/p/5736552.html
Copyright © 2011-2022 走看看