运维的威胁-容器技术

序言

走的太快,容易迷路;走的太快,容易撞墙;不过。。。。我喜欢。

走的太快,容易忘记本心,所以。。。回顾一下为什么要使用docker的原因

容器发展的很快,很多已经上了生产环境了,不过,还是来说说为啥要使用docker的初衷。

WHY?

何为容器?所谓有容奶大。。。。

java程序,一次编译到处运行,在于jdk提供了一个运行时的环境,从而能到处浪。。。

而容器,其实也是一次编译到处运行,浪的更加厉害。。。容器提供了两种标准,一种是运行时环境,和jdk提供的环境差不多,只要能有运行时环境,那么容器就能运行;一种则是镜像标准,主要就是可以提供各种各样的镜像,相当于快照,一次build,到处浪。。。

在写程序的时候,总是面向对象编程,而很多程序员并没有对象,其实镜像也可以看做是对象,然后容器相当于一个一个的实例,从而有redis的镜像,有mysql的镜像,只有你想不到。。。

那么容器解决了什么样的问题?

开发一个程序,本来需求就那么多,bug那么多。。。首先,你得需要一个开发环境,如果你是用到了数据库。。。。你需要安装一个数据库,你需要配置一个用户,你需要授予这个用户相关的权限。。。。换了一个环境。。。你必须又要重复一边,累不累?

安装一个数据库,创建一个VM虚拟机,安装相关的依赖包,下载软件,配置数据库,设置环境变量,授予权限。。。。so much more things to do。。。

安装了一个数据库,一不小心,安装错了,需要卸载,修改配置文件,错了,主机的文件系统都乱了。。。。那么多的软件,都要记住,心好累。。。

那么容器是不是可以解决呢?所以看看容器如何安装一个mysql。

[root@docker-ce mysql]# docker run -d --name mysql -v /mysql:/var/lib/mysql -p 3306:3306 --restart always --env MYSQL_ROOT_PASSWORD=root --env MYSQL_DATABASE=kel --env MYSQL_USER=kel --env MYSQL_PASSWORD=kel mysql:5.7 (运行mysql5.7)

[root@docker-ce mysql]# docker ps(查看运行的容器)

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

369866065e0c mysql:5.7 "docker-entrypoint.s…" 15 seconds ago Up 13 seconds 0.0.0.0:3306->3306/tcp mysql

[root@docker-ce mysql]# python(测试连接数据库)

Python 2.7.11 (default, Jan 27 2018, 09:20:33)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import MySQLdb

>>> conn = MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='kel')

>>> cur = conn.cursor()

>>> sqli="insert into student values(%s,%s,%s,%s)"

>>> cur.execute(sqli,('3','Huhu','2 year 1 class','7'))

1L

>>> aa=cur.execute("select * from student")

>>> print aa

1

>>> print cur.fetchone()

(3L, 'Huhu', '2 year 1 class', '7')

>>> exit()

[root@docker-ce mysql]# docker rm -f mysql(删除数据库容器)

mysql

从上面可以看到如下特点:

1、 一条指令运行一个数据库,再也不用担心写程序的时候,还要想着配置数据库了;

2、 一条指令删除卸载数据库,再也不用担心安装数据库破坏了本地干净的文件系统了;

3、 快速安装开发环境,再也不用烦心数据库还需要各种安装步骤了;

4、 换一套环境,也是这条指令安装数据库,再也不用担心环境不同,测试能运行,而生产不能运行了;

5、 最重要的一点。。。。运维可以失业了,大部分可以回家了。

有的时候你就会想,哎呀,每次都要运行一个指令,还那么多参数,我记不住怎么办呢?那么。。docker-compose出场了,so。。。你只要写一个配置文件。。。。

是不是感觉很酷。。。

一个配置文件就运行了一个数据库。。。。

一个配置文件就能运行一个redis缓存。。。。

一个配置文件就能运行各种各样的中间件。。。

在其中还能做的更多。。。。有的时候java出现了OOM怎么办。。。让运维那群傻逼重启一下么,不需要!!!容器发现了OOM可以做健康检查,可以自动重启!!!

开发环境。。。。测试环境。。。生产环境。。。无缝迁移!!!修改配置?基本不需要。。。只要一次编译,就能到处浪啊浪。。。。

还在想着玩玩mysql,各种安装心烦么。。。用docker吧。。。

还在想着玩玩redis,各种折腾的步骤么。。。用docker吧。。。

用了docker之后,你会发现。。。just fuck it。。。无须惧怕。。。

但是,作为运维,你颤抖了么。。。你怕么,哈哈。。。。

容器

docker。。。容器的代名词,而容器只是一个可写层而已,看看容器的发展进化。。。

docker主要提供单主机的功能,

docker-machine主要提供多主机安装docker的功能,

docker-compose提供多个服务之间的依赖关系功能,

docker swarm mode和kubenerts主要提供服务的编排功能。

最终的目标不过都是进行简化。

etcd的raft协议还是有点意思。毕竟在这个里面还是没有脑裂的概念的。

split brain。。。。都不用shoot head。。。

强一致性。。。分布式。。。

走的太快,容易迷失。。。。so 。。。。find a way to pass through。。。

其他闲扯

1、 品牌效应

树立一个什么样的形象呢?程序狗?还是啥。。。

如果你是技术迷,而别人提到你的时候,说你的交际能力不错,这。。。可能并没有展现你的实力。。。

这就是为什么提到python的时候,别人都会说,这种语言好慢好慢。。。

2、格局

碰到一些人,碰到一些事,我是应该给赞美还是攻击。。。

每次看到不能忍的事和人的时候,我就提醒自己,大局观,大局观,要不然估计上来就直接开始怼,开始秒杀了,简直是FUCK了。。。

每次看到不能忍的时候,怒火千丈。。。这尼玛,遇到你是我的缘。。。尼玛,孽缘啊。。。。。

3、 战力

忍的太多,感觉战力在下降,一看到高手就想投降,大哥,别打脸。。。

一群怂逼影响了战力的发挥。。。。

当尖刺都抹掉了,那就没有战无不胜的勇气了。。。。SO。。。FUCK IT。。。。just fuck it。。。。

运维这么难,让我们写写python吧。。。但是。。。我都忘记了啊。。。。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180211G15LKO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券