在傳統(tǒng)模式中,開發(fā)團隊在開發(fā)環(huán)境中完成軟件開發(fā),自己做了一遍單元測試, 測試通過,?交到代碼版本管理庫。運維把應(yīng)用部署到測 試環(huán)境, QA 進行測試,沒問題后通知部署人員發(fā)布到生產(chǎn)環(huán)境。 在上述過程中涉及到至少三個環(huán)境:開發(fā)、測試和生產(chǎn)。現(xiàn)實情況是,開發(fā)自測 沒問題,但到了測試或者生產(chǎn)環(huán)境程序無法運行,讓開發(fā)團隊排查,經(jīng)過長時間 排查最后發(fā)現(xiàn)是測試環(huán)境的一個第三方庫過時了。這樣的現(xiàn)象在軟件開發(fā)中很普 遍,已經(jīng)不適用如今的快速開發(fā)和部署。docker可以滿足你的需求。
阿里云容器hub開發(fā)者平臺,可以去這里下載需要的鏡像
https://dev.aliyun.com/search.html?spm=5176.1972343.0.1.MSG1P3
首先先查看內(nèi)核版本,這一步很重要
1
|
# uname -a |
查看系統(tǒng)內(nèi)核版本,docker要求內(nèi)核版本為3.10以上,建議(不要在centos6.6上面安裝使用docker,有很多坑,我就是一個個踩過來的)
我使用的是阿里云的ECS centos 6.6 64位的,所以需要升級內(nèi)很,內(nèi)核版本升級的方法:
1
2
3
4
5
|
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm # yum --enablerepo=elrepo-kernel install kernel-lt -y # vim /etc/grub.conf default=0 把default=1 改為default = 0 |
最后重啟服務(wù)器
開始安裝docker
1
2
3
4
5
|
# curl -sSL https://get.docker.com/ | sh # docker --version Docker version 1.7.1, build 786b29d # vim /etc/sysconfig/docker other_args= "--registry-mirror=https://rr8hxwoy.mirror.aliyuncs.com -H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock" 配置阿里云加速 docker pull會很快 |
啟動docker
1
2
|
# /etc/init.d/docker start # chkconfig docker on |
運行docker容器
1
2
3
4
5
6
7
8
|
# docker pull centos latest: Pulling from centos 3690474eb5b4: Already exists af0819ed1fac: Already exists 05fe84bf6d3f: Already exists 97cad5e16cb6: Already exists Digest: sha256:934ff980b04db1b7484595bac0c8e6f838e1917ad3a38f904ece64f70bbca040 Status: Image is up to date for centos:latest |
從阿里云私有鏡像倉庫拉取centos鏡像到本地,因為配置了阿里云鏡像加速,所以下載非常快,30秒鐘搞定。
1
2
3
4
5
6
7
8
|
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos latest 97cad5e16cb6 12 days ago 196.5 MB # docker run -d -it centos /bin/bash 運行centos容器 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 969ad48e4085 centos "/bin/bash" 5 seconds ago Up 4 seconds jovial_torvalds # docker exec -it 969a /bin/bash 進入容器 969a是容器的ID |
Docker啟動容器命令在前面已經(jīng)詳細的講過,不會的童鞋可以到我之前的博客看看
重點來了
java+tomcat在容器中應(yīng)用
測試環(huán)境服務(wù)器配置 centos 6.6 64位,4核處理器,8G內(nèi)存
理論上可以跑16個java容器,因為每個容器消耗內(nèi)存為500M左右,我在上面跑了8個java容器,另外跑了一個nginx做反向代理和一個redis,nginx 和redis都沒有使用docker
需要前提下載好jdk1.7.0.72和 tomcat ,并把他們放在和Dockerfile同一級目錄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
vim Dockerfile #This is My first Dockerfile #version 1.0 #Base image FROM centos:latest #MAINTAINER hh Wang #ADD ADD jdk1.7.0_72.gz /usr/local/ ADD biz-tomcat. tar .gz /usr/local/ #RUN RUN yum -y install wget gcc gcc-c++ make openssl openssl-devel net-tools vim RUN mkdir /docker/myapp/ROOT -p #ENV ENV JAVA_HOME /usr/local/jdk1 .7.0_72 ENV JRE_HOME $JAVA_HOME /jre ENV CLASSPATH .:$JAVA_HOME /lib :$JRE_HOME /lib ENV PATH $PATH:$JAVA_HOME /bin ENV CATALINA_HOME /usr/local/biz-tomcat EXPOSE 8080 CMD [ "/usr/local/biz-tomcat/bin/catalina.sh" , "run" ] # docker build -t whh/biz_tomcat:v1 . 后面有一個點,一定要記住 # docker run -it -d -v /mnt/docker/myapp/ROOT/biz:/docker/myapp/ROOT -v /var/log/biz-tomcat/logs:/usr/local/biz-tomcat/logs -p 9080:8080 --name biz whh/biz_tomcat:v1 |
tomcat的根目錄要事先修改為自己需要的路徑,我這里為docker/myapp/ROOT,把根目錄掛在在宿主機的/mnt/docker/myapp/ROOT/biz目錄下面,當更新代碼的時候,直接把代碼傳到這個目錄,然后重啟一下容器就可以了,不需要把代碼上傳到容器里面,那樣很麻煩。
1
2
3
4
5
6
7
8
|
[root@VM_159_91_centos biz] # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 969ad48e4085 centos "/bin/bash" 21 minutes ago Up 21 minutes jovial_torvalds f67257661e70 registry " /entrypoint .sh /etc 7 hours ago Up 7 hours 0.0.0.0:5000->5000 /tcp high_darwin 4bcc381f5b9f whh /biz_tomcat :v1 " /usr/local/biz-tomc 9 hours ago Up 7 hours 0.0.0.0:9080->8080 /tcp biz # docker tag whh/biz_tomcat:v1 IP:5000/whh/biz_tomcat:v1 IP寫自己本機內(nèi)網(wǎng)的IP或者公網(wǎng)IP都可以 # docker push IP:5000/whh/biz_tomcat:v1 推送到自己私有的倉庫,從其他的服務(wù)器就可以直接pull下來使用 00:19:15 2016-11-16 |
以上所述是小編給大家介紹的Docker 7 docker在阿里云的使用詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的,在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!
原文鏈接:http://www.cnblogs.com/kafeikele/archive/2016/11/16/6067958.html