Docker在云家政的应用

大家晚上好,今晚由我给大家分享《Docker在云家政的应用》

我们公司目前大规模使用了Docker,目前除了数据库应用,其他所有应用都在Docker容器内运行,下面我就Docker在公司的应用做一些分享。、

首先我介绍一下公司的背景,公司属于中小型创业公司,服务器数量不多,但是为了解决一些问题,我们引入了现在比较火的Docker技术。

看一下我们在没用Docker之前遇到的问题:

1、线上环境和测试环境不完全一致,导致测试好的功能上线后会出现一些BUG。

2、部署新项目步骤繁琐,批量部署运行环境后,需要根据每个项目不同的情况,手动修改配置参数。

3、新项目环境部署耗费时间长。有些项目部署需要几十分钟甚至更长时间

4、操作系统版本的差异,导致批量部署遇到麻烦

5、不能跨平台部署环境。

有了这些问题,我们就要解决这些问题

这里我再简单对Docker做一下介绍

Docker是一个新的容器化开源项目,诞生于 2013年初,最初是 dotCloud 公司内部的一个业余项目,项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,基于 Google 公司推出的 Go 语言实现

Docker 提供了一个可以运行你的应用程序的容器,它可以将应用以及依赖包到一个可移植的容器中,然后发布到任何 Linux机器上

Docker 扩展了 Linux 容器(LinuxContainers)通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境,有点类似虚拟机的概念

了解了Docker后,接下来看我们是怎么把Docker用起来的,这里容我再介绍一下公司的背景,公司属于中小型创业公司,服务器数量不多,没有用高大上的Kubernetes、Swarm等Docker集群管理工具

我们都知道为了方便Docker的部署,一般都需要一个Docker私有仓库来存放镜像,我们也有自己的私有仓库,看一下我们公司的私有镜像仓库是什么样子的,里面都存放了哪些镜像。

我们的镜像仓库里面存放了应用服务镜像,如Tomcat,Nginx等,API服务镜像,NoSQL镜像,如Redis服务,MongoDB服务,ES服务等

这些镜像都是根据我们自己的实际需要打包好的环境镜像,新项目需要什么服务,直接拉取私有仓库的镜像,快速的部署。

有了镜像仓库,看一下我们是怎么制作镜像的

我们使用了Dockerfile制作镜像,每个环境都有对应的Dockerfille文件,可以根据实际需要随时调整镜像

以我们其中一个应用服务环境镜像为例(Nginx+php),看一下我们的镜像制作过程:

1、从Docker官方镜像仓库拉取PHP5.6作为基础镜像

2、基于基础镜像安装Nginx以及PHP需要的扩展

3、修改Nginx和PHP的配置

4、生成指定服务的专用镜像

5、将生成好的镜像提交至私有仓库

看一下公司的Dockerfile文件及构建镜像的命令:

Dockerfile文件内容:

FROM php:5.6.31-fpm

RUN apt-get update && apt-getinstall -y \

nginx \

libfreetype6-dev \

libjpeg62-turbo-dev \

libmcrypt-dev \

libpng12-dev \

libxml2-dev \

libssl-dev \

git \

vim \

&& pecl install redis mongodb mongo \

&& docker-php-ext-enable redis mongodb mongo \

COPY ./nginx_vhost_conf/*/etc/nginx/sites-enabled/

docker build –t  hub.yunjiazheng.com/front_web:v1.0 .  构建镜像命令

docker pushhub.yunjiazheng.com/front_web:v1.0           提交镜像到私有仓库。

接下来看一下我们如何利用镜像快速部署环境的。

首先我们服务器在安装完操作系统,初始化系统的时候就会把Docker客户端安装好。

服务器上只需要执行docker pull 拉取一个镜像。然后执行docker run 启动镜像,就可以快速部署好一个需要的环境的。

# docker pullhub.yunjiazheng.com/front_web:v1.0

# docker run –d –p 80:80hub.yunjiazheng.com/front_web:v1.0

docker部署的命令

我来解释一下这2条命令:

docker pullhub.yunjiazheng.com/front_web:v1.0

是从hub.yunjiazheng.com 这个私有镜像仓库拉取front_web镜像,镜像版本是v1.0

docker run –d –p 80:80hub.yunjiazheng.com/front_web:v1.0

这条命令-d是在后端运行容器,-p是映射容器的80端口。然后启动容器

这样就部署好了一个需要的环境。

上面看了Docker部署环境的流程后,有一个问题,同一个镜像运行起来的容器如何区分测试环境和线上环境呢。

为了区分容器运行的环境,接下来要用到云家政的运维平台了。

云家政运维平台运维是自主开发的平台,平台集成了环境管理、配置管理、发布管理、任务管理等功能

在环境管理会先创建好需要的多套环境,例如beta、线上。

创建完环境后,会为每个环境添加不同的配置参数,然后发布的时候选择主机和镜像及要发布的环境就可以自动化部署一套环境。

例如指定服务器A部署A1项目的测试环境:

运维平台自动登录A服务器,拉取A1项目需要的环境镜像,拉取A1项目代码,再拉取平台上为A1项目配置好的测试环境参数,然后启动容器就可以自动部署一套可运行的环境。

看一下我们环境管理的界面:

下面是环境参数的管理界面:

对不同的环境配置不同的参数。

运维平台里面的配置管理,可以在线管理线上、测试环境等配置信息,配置管理可以添加、删除、修改代码连接的数据库信息、redis信息等配置信息.

运维平台提供测试环境、线上环境的配置信息API接口,服务器容器启动的时候会根据服务器类型去获取不同的配置信息API来获取不同的参数,并将服务器部署成不同的应用环境。

实现逻辑大致是上面的图形展示的这样。

接下来看一下我们通过运维平台部署好的应用的界面:

主机就是发布好的主机,版本是容器运行镜像的版本,状态是容器的运行状态,在这里可以对容器进行远程管理。

目前云家政所有服务除了数据库是直接运行在操作系统上,其他所有应用服务都实现了容器化,每个项目服务都有对应的镜像,可以在最快几秒内实现服务的快速部署。

运维平台通过调用服务器上Docker  API接口实现对容器的启动、关闭、执行命令、更新镜像等自动化管理。

现在大家来看一下我们引入Docker后都得到了哪些好处:

1、保证了运行环境的一致性,线上环境和测试环境使用同一个镜像,测试环境测试通过后,上线后不会出现因为环境差异而导致Bug。

2、部署新项目方便快捷,不用考虑操作系统的差异而导致自动部署失败。

3、新项目部署速度快,可在秒级部署好一个项目环境

4、服务镜像制作完成后,可以多次快速部署,方便快速横向扩展服务

5、支持跨平台部署。

目前我们公司运维平台因为一些功能还不完善,等完善后,后续会将运维平台开源。

以上是公司对Docker使用的一点分享,后续如果有机会可以分享一下我们的运维平台。

感谢大家的收看。

Q1 贵公司使用编排工具了吗?

公司目前还没有用到docker的编排工具,公司的运维平台通过调用docker的接口的方式实现对docker的自动化管理。

Q2:贵公司如何保证容器还在运行中,容器内服务已经挂掉,还能正常对外提供服务。

目前是利用python开发了一些脚本实现对容器内部的资源的监控,后期运维平台会集成监控报警功能,对容器内部的资源和服务进行监控。

Q3 贵公司使用的是什么网络?如何跨主机调用的,实例销毁后ip会变化吗。

目前还是使用docker默认的网络,容器映射端口实现跨主机调用,容器内部ip发生变化对调用没有影响。

Q4 日志也在容器里面吗? 如果研发要看日志怎么办呢.

日志有些项目我们是将代码映射在宿主机上,开发要看就在宿主机看。不过后面我们运维平台也会支持查看指定文件或者日志。Q4 日志也在容器里面吗? 如果研发要看日志怎么办呢.

日志有些项目我们是将代码映射在宿主机上,开发要看就在宿主机看。不过后面我们运维平台也会支持查看指定文件或者日志。Q6 nginx和php在一个容器中,一次构建发布需要多久?

这个很快,拉镜像和代码是内网拉取,第一次可能稍慢2-3分钟,后面如果镜像没更新,只是更新代码,也就几秒完成。

Q5 请问docker持久化存储是如何实现的?

除了一些重要的应用的数据定期自动备份数据实现数据持久化,像数据库这种重要应用没有在容器内运行。

Q6 nginx和php在一个容器中,一次构建发布需要多久?

这个很快,拉镜像和代码是内网拉取,第一次可能稍慢2-3分钟,后面如果镜像没更新,只是更新代码,也就几秒完成。

时间: 2024-10-14 23:22:11

Docker在云家政的应用的相关文章

原创:Docker在云家政的应用 谢绝复制粘贴内容

我们公司目前大规模使用了Docker,目前除了数据库应用,其他所有应用都在Docker容器内运行,下面我就Docker在公司的应用做一些分享.. 首先我介绍一下公司的背景,公司属于中小型创业公司,服务器数量不多,但是为了解决一些问题,我们引入了现在比较火的Docker技术. 看一下我们在没用Docker之前遇到的问题: 1.线上环境和测试环境不完全一致,导致测试好的功能上线后会出现一些BUG. 2.部署新项目步骤繁琐,批量部署运行环境后,需要根据每个项目不同的情况,手动修改配置参数. 3.新项目

Docker,云时代的程序交付方式

Docker,云时代的程序交付方式 Docker - 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engine 的正式发布?Azure入华?还是AWS落地中国?留在每个人大脑中的印象可能各不相同,但要是让笔者来排名的话那么Docker绝对应该算是第一位的. 如果你之前听说过它的话,那么也许你会说"没错,就是它",因为几乎世界各地的开发.运维都在谈论着Docker:如果你还没听说过Docker,那么我 真的建议你花上10分钟来阅读本文. 1.

Kubernetes+Docker的云平台在CentOS7系统上的安装

Kubernetes+Docker的云平台在CentOS7系统上的安装 1.运行VirtualBox5. 2.安装CentOS7系统. 注意:选择Basic Server类型 安装过程略. 3.修改计算机IP和计算机名. 1)nmtui 1. 修改主机名: nmcli general hostname slave1.smartmap.com 2. 修改网络连接 nmcli connection edit enp0s3 nmcli> goto ipv4 nmcli ipv4> set metho

云计算新十年大考:Docker企业云操作系统

对于云计算来说,2016年是承上启下之年,这一年是AWS亚马逊云推出十周年,也是谷歌首提"云计算"十周年.过去的十年里,云计算经历了从0到1的生死大考.如今,AWS已经年营收达78.8亿美金,Wikibon预测全球公有云市场将在2026年达4930亿美元. 在过去十年间,云计算技术经历了从模糊到清晰.从概念框架到具体开源项目以及产品化.从AWS的SOA微服务开始,2010出现的OpenStack开源项目是对AWS具体的产品化,而2013年出现的Docker容器技术是对未来云计算的进一步

win 10 配置docker 阿里云 加速器

1.使用阿里云加速器加快获取docker官方的镜像 步骤一:如果没有阿里云账号,需要注册阿里云开发账号 https://dev.aliyun.com/ 步骤二:进入加速器页面获取加速信息 https://cr.console.aliyun.com/#/accelerator 2.配置docker节点 打开docker ,然后配置加速,apply之后会自动重启. 3.验证 未加速之前 开启加速之后 原文地址:https://www.cnblogs.com/start2019/p/10887860.

Docker阿里云加速

登录阿里云: https://homenew.console.aliyun.com/ 搜索“容器镜像加速服务” 镜像加速器.仓库地址地址: 每个人的不一样,看你自己的是多少,拷贝出来: https://iuoqhx7o.mirror.aliyuncs.com 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 udo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { &qu

centos7 安装docker-ce ,最新版本docker,docker阿里云加速

直接用yum install docker -y安装的docker版本为1.12,但是docker发展很快,现在都17.06.2了.docker-ce是指docker的社区版 卸载老版本的 docker 及其相关依赖 sudo yum remove docker docker-common container-selinux docker-selinux docker-engine 安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源 sudo yum i

Docker私有云管理平台————Docker Shipyard

一. Docker Shipyard是什么 ? shipyard是一个开源的docker管理平台,其特性主要包括: 支持节点动态集群,可扩展节点的规模(swarm.etcd方案) 支持镜像管理.容器管理.节点管理等功能 可视化的容器管理和监控管理 在线容器console终端 二. Shipyard中文版源码托管在github(传送门). 1.登陆界面 2.容器列表 3.容器信息创建 4.容器信息 5.终端连接 6.镜像信息 7.节点信息 8.仓库信息 三.shipyard中文版安装(CentOS

利用DOCKER实现云桌面的开发环境初步设想

想法阶段,持续更新中 一.准备一台开发专用服务器 二.建立企业私有镜像仓库 三.建立开发环境镜像并提交到私有镜像仓库 开发镜像的要求: 1.安装vnc服务,ssh服务 vnc密码的设定 2.安装开发环境 四.按照开发人员的人数,建立相应人数的容器,并公布给开发人员使用