传统和Docker模式在软件部署方式上的比较
在传统模式中,开发团队在开发环境中完成软件开发,自己做了一遍单元测试,测试通过,提交到代码版本管理库,打包给QA进行测试。运维把应用部署到测试环境,QA进行测试,没问题后通知部署人员发布到生产环境。
在上述过程中涉及到至少三个环境:开发、测试和生产。现实情况是,开发自测没问题,但到了测试或者生产环境程序无法运行,让开发团队排查,经过长时间排查最后发现是测试环境的一个第三方库过时了。这样的现象在软件开发中很普遍,已经不适用如今的快速开发和部署。
在Docker模式中,应用是以容器的形式存在,所有和该应用相关的依赖都会在容器中,因此移植非常方便,不会存在像传统模式那样的环境不一致。
下图描述了传统模式和Docker模式在软件部署方式上的区别:
ECS    D ocker 实践
下图描述了ECS    Docker 如何使开发、测试和运维之间合作更紧密,各司其职,效率更高。
以一个简单的应用开发、测试和发布来说明Docker 在阿里云ECS 上的运用:
1) 运维人员在ECS 上搭建私有Docker Registry 。
2) 开发人员在开发ECS 上从阿里云或私有Docker Registry 获取应用需要的基础镜像。 3) 开发人员开发ECS 上构造应用容器,自测后提交容器为新的镜像并推送到私有Docker
Registry ,通知QA 测试。
4) QA 在自己的测试ECS 上启动容器,测试后,有问题则a),没问题则b)。
a) 通知开发修复,回到步骤3)。
b)
提交到私有Docker Registry ,准备发布。
5) 发布人员下载最新版本镜像并在生产ECS 上启动容器。
下面以一个简单的Guestbook(PHP+Redis)应用为例详细说明各步骤。
1. 搭建私有Docker Registry
私有Docker    R egistry 搭建非常简单,官方推荐的方式是直接使用registry 镜像:
docker run -p 5000:5000 registry
也可以通过-­‐e参数来传递信息,如:
docker run -e STORAGE_PATH=/opt/docker/registry -p 5000:5000 registry 也可以使用阿里云OSS做后端存储,如:
docker run -e OSS_BUCKET=<your_ali_oss_bucket> -e
STORAGE_PATH=/docker/ -e OSS_KEY=<your_ali_oss_key> -e
OSS_SECRET=<your_ali_oss_secret> -p 5000:5000 -d chrisjin/registry
详细配置请参考github/docker/docker-­‐registry,用户如需要实现一些认证,可以搭建Nginx来做基础认证。
2.在开发ECS上部署应用容器
2.1制作Docker Redis
2.1.1创建Redis目录
mkdir redis
cd redis
angular和angularjs2.1.2 制作Dockerfile
vi Dockerfile
FROM centos:centos6
MAINTAINER bryan dev@dev
# install redis
RUN yum install -y curl tar make gcc wget
RUN cd /usr/local/src && \
wget dis.io/ && \
tar xf && \
cd redis-stable && \
make && \
make install
EXPOSE 6379
CMD ["/usr/local/bin/redis-server"]
MAINTAINER 是Dockerfile 维护者信息,用户可以自定义。
2.1.3 构造docker image
docker build -t="zubryan/redis" .
docker images
REPOSITORY TAG IMAGE ID
CREATED VIRTUAL SIZE zubryan/redis latest 1f6680b24682    2 minutes ago 388.5 MB
centos centos6
68edf809afe7
8 days ago
212.7 MB
“zubryan/redis”是镜像库名,用户可以自己指定。
2.1.4 运行Redis 容器
docker run --name redis -p 6379:6379 -d zubryan/redis docker ps -l
2.1.5  验证Redis 容器运行
在实例安装redis 客户端后,运行以下命令验证Redis 运行。
redis-cli
127.0.0.1:6379> set mykey "Hello" OK
127.0.0.1:6379> get mykey "Hello"
CONTAINER ID  IMAGE
COMMAND
CREATED STATUS
PORTS
NAMES
9418c0118373 bryan/redis:latest /usr/local/bin/redis    2
seconds ago
Up 1 seconds
0.0.0.0:6379->6379/tcp redis

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。