docker已經是現在最熱的容器技術,最近也去體驗了一下,在daocloud注冊了一個賬號,并開始本機實戰docker。daocloud免費有兩個容器可用,體驗送T恤,邀請送書,這里我分享一個daocloud的邀請碼https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平臺,使用體驗好,問題響應也及時,綁定微信還送一個額外容器。
好吧,停止廣告,daocloud再好,也不給我發錢,真是的。
這里就介紹一下我最簡單的一個docker-tomcat容器。
首先在我的linux機器上安裝docker:
安裝教程特別多,隨便可以找到,我的本地環境是64位的centos7.0,所以安裝就被簡化為:
Sudo yum install docker
這么一句話了。
docker的核心思想是everything is container,docker運行的就是一個個的容器,而容器是用戶完全自定義的鏡像,我個人認為最靈活的就是寫一個dockerfile(我理解就算一個鏡像了),然后把它build為鏡像并run,一個可用的容器環境就完全起來了。
步驟:
1,創建一個項目,最好在git上
2,寫Dockerfile文件,描述你的鏡像
3,docker build
4,docker run
這樣就好了。
于是,以我個人的項目為例:
1,創建項目:https://github.com/changedi/mydocker
2,編輯Dockerfile:https://github.com/changedi/mydocker/blob/master/Dockerfile
3,在本地項目中運行docker build <image_name> .,build一個自定義名字的鏡像
4,啟動這個鏡像容器:docker run -d -p 80:80 <image_name>
這樣,這個鏡像就好了,服務也起來了,后續可以通過docker ps來查看啟動的鏡像,通過docker stop來停止容器。
我這里解釋一下我的Dockerfile:
1 # Using a compact OS
2 FROM ubuntu:13.10
3
4 MAINTAINER changedi <jysoftware@gmail.com>
5
6 # update source
7 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list
8 RUN apt-get update
9
10 # Install curl
11 RUN apt-get -y install curl
12
13 # Install JDK 7
14 RUN cd /tmp && curl -L 'http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz' -H 'Cookie: oraclelicense=accept-securebackup-cookie; gpw_e24=Dockerfile' | tar -xz
15 RUN mkdir -p /usr/lib/jvm
16 RUN mv /tmp/jdk1.7.0_65/ /usr/lib/jvm/java-7-oracle/
17
18 # Set Oracle JDK 7 as default Java
19 RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-oracle/bin/java 300
20 RUN update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-oracle/bin/javac 300
21
22 ENV JAVA_HOME /usr/lib/jvm/java-7-oracle/
23
24 # Install tomcat7
25 RUN cd /tmp && curl -L 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz' | tar -xz
26 RUN mv /tmp/apache-tomcat-7.0.8/ /opt/tomcat7/
27
28 ENV CATALINA_HOME /opt/tomcat7
29 ENV PATH $PATH:$CATALINA_HOME/bin:$JAVA_HOME/bin
30
31 # ADD ace-java-demo-1.0.0.war /tmp/myapp/
32 # RUN cd /tmp/myapp && jar -xvf ace-java-demo-1.0.0.war
33 # RUN rm -rf ace-java-demo-1.0.0.war
34 # RUN cp -R /tmp/myapp /opt/tomcat7/webapps/myapp
35 # RUN mkdir /opt/tomcat7/webapps/myapp
36 RUN rm -rf /opt/tomcat7/webapps/ROOT/*
37 ADD ace-java-demo-1.0.0.war /opt/tomcat7/webapps/ROOT/ace-java-demo-1.0.0.war
38 RUN cd /opt/tomcat7/webapps/ROOT/ && jar -xvf ace-java-demo-1.0.0.war
39
40 ADD tomcat-users.xml /opt/tomcat7/conf/tomcat-users.xml
41 # ADD server.xml /opt/tomcat7/conf/server.xml
42 RUN cat /opt/tomcat7/conf/serv*.xml
43 RUN ls /opt/tomcat7/conf
44 RUN ls /opt/tomcat7/webapps
45
46 ADD tomcat7.sh /etc/init.d/tomcat7
47 RUN chmod 755 /etc/init.d/tomcat7
48
49 # install nginx
50 RUN apt-get install nginx -y
51 ADD ./nginx/nginx-conf /etc/nginx/conf.d
52
53 # Expose ports
54 EXPOSE 80
55
56
57 # Define default command.
58 ENTRYPOINT service tomcat7 start && tail -f /opt/tomcat7/logs/catalina.out
主要做幾件事:
1,拉個操作系統:這里是Ubuntu
2,裝工具:curl、jdk、tomcat、nginx,配置環境變量,配置tomcat,配置nginx(tomcat和nginx的配置都是本地搞好,直接add)
3,部署應用(自己的war包),這里我直接利用docker的ADD操作,把git項目中的文件直接add到容器中
參考資料:
1,docker安裝 http://www.linuxidc.com/Linux/2014-12/110034.htm
2,dockerfile編寫 http://blog.csdn.net/we_shell/article/details/38445979