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

  • 相关阅读:
    Golang之字符串格式化
    BZOJ 4513: [Sdoi2016]储能表 [数位DP !]
    BZOJ 3329: Xorequ [数位DP 矩阵乘法]
    BZOJ 1833: [ZJOI2010]count 数字计数 [数位DP]
    HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]
    未完
    [Miller-Rabin & Pollard-rho]【学习笔记】
    BZOJ 3551: [ONTAK2010]Peaks加强版 [Kruskal重构树 dfs序 主席树]
    BZOJ 3123: [Sdoi2013]森林 [主席树启发式合并]
    BZOJ 3545: [ONTAK2010]Peaks [Splay启发式合并]
  • 原文地址:https://www.cnblogs.com/xingzc/p/5736552.html
Copyright © 2011-2022 走看看