践行devops (3)----docker安装

这一块本来是打算写jenkins安装的

想想还是写docker吧

先插一段故事吧.

第一次听说docker 是大四在中投出差的时候,当时微软的一个团队说要用docker 运行什么东西

这个东西就是我旁边的同事弄得,问他什么是docker,他回答说,可以理解为轻量级的虚拟机.

后来也接触过一点docker 但是都不深

在平安有1个事情搞得我很头疼,日志问题,为此还特地去研究了springboot 的日志

当时,平安的要求是把日志分类,我当时在自己的电脑测试了ok的,发到平安的机器上面一看没有日志输出,真是见鬼

了,为了验证我到多台机器上面去跑程序,结果都是有的,但是一到平安的机子上面就没有,真的很抓狂

上周也遇到一个很意外的情况

springcloud 的eureka启动不了

eureka 几乎没有代码,启动器起来就不需要管它,这样的项目,基本上就不需要重启,跟新之类的.

上次遇到一个eureka不下线微服务的问题,手动关掉eureka之后,启动不起来了.

打电话问了头头有没有改代码,头头说没有啊,一直都没有动啊

我赶紧从git上面下载一个本地跑一下,在本地启动没有报错啊,相同jar再次传到linux上面又报错
报错信息是:log4j2.xml not found

很奇怪的报错

当时去研究springboot 的日志的时候 查过springboot 的默认日志框架是logback, 这个log4j2.xml 是log4j的第二代日志框架的配置文件啊,问题在于eureka几乎没有逻辑代码,就一个启动类,也没有指定什么log4j2的框架,那应该默认走logback才对

怎么办了?提示缺少log4j2,xml 那就加上呗,加上去再放到linux上面跑一下 这次不报 log4j2.xml not found

但是报错是这个 log4j2.xml 有问题 .这个就很尴尬了,这个文件是从其他地方复制过来的,按理来说应该不会有什么问题

在这里插入图片描述

再想办法.

这个时候注意到属性文件里面没有application.properties 这个属性文件,而是几个eureka 的配置文件,当时想会不会是因为 缺少这个默认的属性文件了?

因为springboot在启动的时候会按照优先级去加载属性文件,有可能没有这个属性文件,导致没有去初始化logback,然后eureka的框架代码用到了 log4j2 进而导致log4j2报错.

那把application.properties 加上,并且配置一下logback日志信息看下了?

结果成功了,程序成功的跑起来没有报错.

上面的分析过程还是有点问题,那就是没有办法解释 为啥同样的代码,也是相同的机器,以前运行ok 的,现在就不ok了呢?为啥在windows 上面可以正常的运行,在linux上面就不行了?

鬼知道其中的原因,springboot本身就做了很多的封装,这一块那一块的,作为我们软件开发者,你只能去猜测什么地方可能出现问题,然后去验证,我想真正能够知道原因的也只有springboot的开发者了吧,源码级别的分析总会知道的.

在这里插入图片描述


故事讲完了,回到安装吧

上面的情况可能比较难出现,但是还是有一定的几率出现,一旦出现了,那就比较的头疼.

docker技术很好的解决了这个问题

docker 本身就是统一环境用的,而且非常的方便,今天还发现一个docker 的其他的妙用,那就是可以用来安装科学计算环境之类的

之前周围有的人 安装个opencv 配置python 就很够呛,因为总是配置环境出错,很头疼,其实docker 上面有别人做好的镜像 ,直接拉取别人的镜像,然后运行就ok了,就是这么的简单.

下面介绍下docker的安装,以及在docker环境上面安装并运行jupyter notebook

1.统一环境
centos7.2 64位

2.安装必要的软件

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.跟新yum 缓存

sudo yum makecache fast

5.安装docker 服务

sudo yum -y install docker-ce

6.系统启动docker 服务

sudo systemctl start docker

docker 的安装比较简单,几句简单的命令就ok 了

在命令行输入docker ,看到有反应就成功了

在这里插入图片描述

下面来安装下jupyter notebook

输入命令

docker search jupyter

在这里插入图片描述

可以看到这里有很多的镜像可以下载使用

比如要安装第一个 输入命令

docker pull jupyter/datascience-notebook

安装完成后 输入

docker images

就可以查看已经安装好的镜像了
在这里插入图片描述

这个镜像6.32G 挺大的

想要运行也很简单,直接

docker run -p 8888:8888 jupyter/datascience-notebook

我这台主机是一台百度云的服务器
记得把-p 加上,要不然访问8888端口 是不行的,本地的没有试过,大家可以看下

记得把服务器的安全组的端口开放打开

运行结果如图所示:

在这里插入图片描述

这个时候就已经启动成功了

用服务器ip 8888端口访问就ok

注意看后面有个token ,后面会用到

打开效果如图所示:
在这里插入图片描述

把上面的token 输入进去就ok了

在这里插入图片描述

还是那个熟悉的界面

到这里就安装ok了,可以正常使用了

再想一个问题:
其实网上也有pip 安装的教程,也比较简单,几条命令就可以安装成功, 用docker安装的话 还要先安装docker ,岂不是更烦了?

仔细想想pip有pip2和pip3 你怎么知道用pip安装就一定会成功了? 运气不好,安装的时候报各种错误,解决起来也是很头疼,docker 虽然要安装下,但是镜像之类的都是在前人成功的基础上进行的,别人直接上传成功的镜像到仓库里,前人种树,后人乘凉,就是这个意思,只要下载了docker ,那么几乎可以肯定是成功的.

docker 宣称的是环境统一,仔细想想会不会用docker 也会出现不统一的情况了?

上次听平安的讲座,小金老师说docker 本质上类似进程,他还是用的linux的内核的,linux的内核坏了,所有的docker镜像都会错误,所以才会有docker 的企业版,更加的安全
这么一说的话,我感觉用了docker还是有一定的几率会出问题的,不过docker 的开发者肯定已经隔离环境做的很好了,可以说docker可以保证环境统一,真正的出问题了,那肯定也是linux内核级别的问题了,也就和我们这些普通的软件开发者没有什么关系了,会有人修复的.

总体而言,docker技术还是十分前卫的,用好docker ,环境问题可以得到最大化程度的统一.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值