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,,,,這個主要是供我自己以后回憶的。。

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

  然后創建鏡像,為了提交到私有倉庫所以如此命名:

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

下面這幅圖是我找到的,個人感覺非常好,大家學習后可以把這幅圖的流程都走通就差不多啦,至於對這幅圖的理解這里我就不說了

 

好了,這就是我的一些收貨,希望對大家有所幫助,純原創,duang~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM