在传统模式中,开发团队在开发环境中完成软件开发,自己做了一遍单元测试, 测试通过,ᨀ交到代码版本管理库。运维把应用部署到测 试环境, QA 进行测试,没问题后通知部署人员发布到生产环境。 在上述过程中涉及到至少三个环境:开发、测试和生产。现实情况是,开发自测 没问题,但到了测试或者生产环境程序无法运行,让开发团队排查,经过长时间 排查最后发现是测试环境的一个第三方库过时了。这样的现象在软件开发中很普 遍,已经不适用如今的快速开发和部署。docker可以满足你的需求。

阿里云容器hub开发者平台,可以去这里下载需要的镜像

https://dev.aliyun.com/search.html?spm=5176.1972343.0.1.MSG1P3

首先先查看内核版本,这一步很重要

# uname -a

查看系统内核版本,docker要求内核版本为3.10以上,建议(不要在centos6.6上面安装使用docker,有很多坑,我就是一个个踩过来的)

我使用的是阿里云的ECS centos 6.6 64位的,所以需要升级内很,内核版本升级的方法:

# 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=    把default= 改为default = 

最后重启服务器

开始安装docker

# curl -sSL https://get.docker.com/ | sh  

# docker --version
Docker version 1.7., 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

# /etc/init.d/docker start
#  chkconfig docker on

运行docker容器

# 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秒钟搞定。

# docker images

REPOSITORY                             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

centos                                 latest              97cad5e16cb6         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启动容器命令在前面已经详细的讲过,不会的童鞋可以到我之前的博客看看

重点来了

java+tomcat在容器中应用

测试环境服务器配置  centos 6.6 64位,4核处理器,8G内存

理论上可以跑16个java容器,因为每个容器消耗内存为500M左右,我在上面跑了8个java容器,另外跑了一个nginx做反向代理和一个redis,nginx 和redis都没有使用docker

需要前提下载好jdk1.7.0.72和 tomcat ,并把他们放在和Dockerfile同一级目录
vim Dockerfile
#This is My first Dockerfile
#version 1.0
#Base image
FROM centos:latest
#MAINTAINER hh Wang #ADD
ADD jdk1..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..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
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目录下面,当更新代码的时候,直接把代码传到这个目录,然后重启一下容器就可以了,不需要把代码上传到容器里面,那样很麻烦。

[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写自己本机内网的IP或者公网IP都可以

# docker push IP:5000/whh/biz_tomcat:v1   推送到自己私有的仓库,从其他的服务器就可以直接pull下来使用

00:19:15 2016-11-16

docker-7 docker在阿里云的使用的更多相关文章

  1. 在centos7上修改docker加速镜像为阿里云

    使用docker pull,命令下载镜像太慢了,默认是从国外的,本文记录下如何配置国内阿里云竞相加速方式. 登录https://cr.console.aliyun.com,如下, 阿里云会为每个用户提 ...

  2. Docker镜像加速==》阿里云加速器

    1.使用阿里云加速器加快获取docker官方的镜像 步骤一:如果没有阿里云账号,需要注册阿里云开发账号 https://dev.aliyun.com/ 步骤二:进入加速器页面获取加速信息 https: ...

  3. docker镜像上传阿里云仓库

    推送至阿里云镜像:1.首先在阿里云上选择容器镜像服务,创建命名空间以及镜像仓库2. docker login --username=zhangshitongsky@163.com registry.c ...

  4. Eova 怎么放在 Docker中,使用阿里云流水线构建Eova!!

    Eova 快速开发框架不做过多解释,使用起来超级爽提高了我们的开发效率. 有要了解的可以去官网看下http://www.eova.cn/ 最近我们想在docker中运行并且使用阿里云的云效工具去构建部 ...

  5. Docker镜像发布到阿里云

    登录阿里云Docker Registry $ sudo docker login --username=xxx@xxx.com registry.cn-hangzhou.aliyuncs.com 从R ...

  6. Docker for windows10 配置阿里云镜像

    到官网下载 并且 安装 Docker for windows  (注意 官方要求 windows10 是企业版才行  天朝你懂的 ) 关于 Docker for windows  要求有  带有 hy ...

  7. 【docker】【mysql】docker安装mysql,阿里云docker镜像加速器,docker搜索查看远程仓库上的镜像,docker拉取镜像,查看本地所有镜像,查看容器的运行状况,查看容器的详细信息

    在docker上安装mysql有两种方式 1.通过Dockerfile构建 2.直接在docker hub上拉取镜像安装 =================本篇采用方法2=============== ...

  8. 修改docker的地址为阿里云源

    https://blog.csdn.net/jacabe/article/details/78575316

  9. toolbox docker国内镜像(阿里云加速器)

    docker-machine create --engine-registry-mirror=加速地址 -d virtualbox default# 若虚拟机已经创建好docker-machine s ...

  10. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

随机推荐

  1. 【Asphyre引擎】冒险岛换装Demo升级到最新版PXL

    demo代码  (不包含Sprite代码,要Sprite代码请下载之前那个doudou的demo)

  2. GJM: Unity3D基于Socket通讯例子 [转载]

    首先创建一个C# 控制台应用程序, 直接服务器端代码丢进去,然后再到Unity 里面建立一个工程,把客户端代码挂到相机上,运行服务端,再运行客户端. 高手勿喷!~! 完全源码已经奉上,大家开始研究吧! ...

  3. Linux学习笔记15-YUM安装

    rpm软件包缺点:需要手工解决软件包的依赖关系.使用YUM可解决该问题. YUM(Yellodog Updater, Modified)是一个RPM前端程序,主要目的是设计用来自动解决RPM的依赖关系 ...

  4. JavaScript学习(3):函数式编程

    在这篇文章里,我们讨论函数式编程. 什么是函数式编程?根据百度百科的描述,“函数式编程是种编程典范,它将电脑运算视为函数的计算.函数编程语言最重要的基础是 λ 演算(lambda calculus). ...

  5. Space.js – HTML 驱动的页面 3D 滚动效果

    为了让我们的信息能够有效地沟通,我们需要创建用户和我们的媒体之间的强有力的联系.今天我们就来探讨在网络上呈现故事的新方法,并为此创造了一个开源和免费使用的 JavaScript 库称为 space.j ...

  6. Immutable.js – JavaScript 不可变数据集合

    不可变数据是指一旦创建就不能被修改的数据,使得应用开发更简单,允许使用函数式编程技术,比如惰性评估.Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 f ...

  7. .net弹出框

    弹出框可以使用div来显示在前台增加 <div id="flowDiv" runat="server"> <div class="r ...

  8. 世界城市 XML

    下载地址:http://www.qlcoder.com/uploads/dd01140921/147988679320159.xml <Location> <CountryRegio ...

  9. iOS 判断数组是否为空

    有人说可以用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法:用 (!array) ...

  10. 高性能JS笔记3——DOM编程

    一.访问与修改DOM DOM和JS 相当于两个岛屿,访问操作的次数越多,要交的过路费越多,对性能产生很大影响. 减少访问DOM的次数,把运算尽量留在JS端操作. 二.innerHTML 对比 DOM ...