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

相關文章
相關標籤/搜索