Docker我的学习总结

最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少许代码。html

刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。好比:java

一、Docker 容器的启动能够在秒级实现,这相比传统的虚拟机方式要快得多linux

二、Docker 对系统资源的利用率很高,一台主机上能够同时运行数千个 Docker 容器。web

三、更快速的交付和部署、更轻松的迁移和扩展docker

等等……apache

由于我是作java开发的,咱们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每一个tomcat里面一个java应用,你们也知道tomcat不用安装,当咱们项目要迁徙的时候也只须要把整个tomcat打包而后在另外一台服务器上解压就ok了,也很简单。。。当时我就不懂Docker有什么好处,一度觉得对咱们现有的模式没用。知道昨天跟其余人交流我才弄明白一个问题,那就是应用隔离与资源独立!!ubuntu

这是我刚画的一个图,如今咱们的模式是A1,全部的应用共享服务器的CPU、内存等资源,这时若是一个应用出现问题,好比CPU爆满等等,另外一个应用也就玩完了。因此要这时就要作到资源独立,一个应用一份资源,如今要作到这样只有作成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时若是你要重启虚拟机,你想一想你重启电脑要多久。并且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?我是以为麻烦。若是有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,彻底知足了应用隔离的需求。并且容器重启,1秒搞定!应用迁移的时候,这个你们应该也知道,全部装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!tomcat

 

下面是个人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

  而后建立镜像,为了提交到私有仓库因此如此命名:app

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

相关文章
相关标签/搜索