大数据开发环境搭建番外之docker初识

1. 写在前面

这几天业余时间简单的学习了一下docker,这个东西是Linux容器的一种封装,然后提供简单易用的容器接口, 这个东西有点像轻量级的虚拟机, 能够将应用程序和该程序需要的依赖打包在一个文件里面, 运行的时候就会生成一个虚拟容器,让程序在里面运行而不用担心环境问题。 既然有虚拟机了,那为啥要用docker呢? docker成本开销要比虚拟机小的多。 这篇文章就来初识一下docker,顺便在之前的Linux系统上安装一下

2. docker初识

2.1 软件配置难题

要想了解docker的来龙去脉,还得先从环境配置的难题开始, 软件开发最大的困难之一就是环境配置, 如果想让某个软件在各个计算机上运行, 就需要保证操作系统的设置和各种依赖库和组件都齐全,这样软件才能运行。比如装一个python应用, 计算机必须有python引擎,还得有各种依赖,还要设置环境变量等。 即环境配置是一个麻烦事,并且还有个头疼的事情就是,好不容易在一台计算机上配置好了环境,应用也能正常跑起来了, 如果这时候换一台计算机,就需要重新配置环境, 那就更麻烦了,所以有些人就想, 安装软件的时候,能不能把所需要的环境啊,包啊啥的一块弄过来, 这样换了机器,也不用人工再配置环境,应用就直接能跑呢? 就类似于Windows里面的绿色版软件。 这就要谈到虚拟机了。

2.2 虚拟机

虚拟机我们应该都清楚了, 前面整个大数据环境的搭建就是依赖于虚拟机, 虚拟机就是环境安装的一种解决方案, 可以在一个系统运行另一个系统,比如我前面就是Windows里面运行的3个Linux系统,这三个系统用起来和真实系统一模一样,应用程序毫无感知。 对于底层的系统来说,虚拟机就是一个普通的文件, 虚拟机运行需要的各种环境会放到一个文件夹里, 如果想运行,就直接能打开, 不需要了就直接删掉。 如果想在别的机器上运行,只需要把整个文件夹复制, 这时候,虚拟机就可以直接在别的机器上跑。 这样就非常的方便了。虚拟机就实现了一种自带环境的方案。 But,有几个缺点:

  1. 资源占用多: 虚拟机独占一部分内存和硬盘空间。 它运行的时候,其他程序就不能使用这些资源了,哪怕虚拟机里面的应用程序,真正使用的内存只有1M, 虚拟机依然需要几百MB才能运行。 这也就是为啥我16G内存开三台虚拟机之后,即使虚拟机不运行程序, 也会占掉70%左右的内存。
  2. 冗余步骤多,虚拟机是完整操作系统,一些系统的操作步骤, 往往无法跳过,如用户登录
  3. 启动慢: 虚拟机启动系统,挺慢的, 可以具体体会一下哈哈

所以,针对虚拟机上面的这些缺点, Linux发展出了另一种虚拟机技术: Linux容器(Linux Containers, LXC)。

2.3 Linux容器

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。 或者说,在正常的进程外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。注意, 容器是进程级别的。有下面几个优势:

  1. 启动块:容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。
  2. 资源占用少:容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。
  3. 体积小:容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

总之, 容器有点像轻量级的虚拟机, 能够提供虚拟化的环境, 但成本开销小得多。

有了上面的铺垫,下面就是docker了。

2.4 Docker

Docker就是Linux容器的一种封装, 提供简单易用的容器使用接口,是目前比较流行的Linux容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

关于docker, 三种重要部件:

  1. docker镜像
    这个就类似于安装虚拟机系统时用到的镜像文件, 是docker容器运行时的只读模板。Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
  2. docker仓库
    用来保存镜像,可以理解为代码控制中的代码仓库。
  3. docker容器
    Docker 容器和虚拟机的那个文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。

简单的了解之后, 就来安装。

3. docker安装

打开master虚拟机, rank开始。 具体安装可以参考CentOS文档。

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker , 输入命令uname -r先查看下内核版本。更新下yum yum update

如果安装过旧版本,需要卸载。

 sudo yum remove docker  docker-common docker-selinux docker-engine

这里我使用yum命令出现了一个报错:

大数据开发环境搭建番外之docker初识_第1张图片
然后就是我各种yum命令都不能用了, 即使输入yum, 也会报错: No module named "yum"。 这个原因是这样, 安装的yum和python版本不匹配了, 因为我当时修改过Linux自带的python版本

在这里插入图片描述
发现这里有两个python, yum当时的python是2.x版本的,也就是这里的python2, 而上面那几个文档了里面解析的时候都是用的python(也就是python3)解析的,所以会报语法错误。 于是,要么修改这里的python超链接, 要么改具体的文件, 比如yum命令: gedit /usr/bin/yum

大数据开发环境搭建番外之docker初识_第2张图片
其他几个报错都是这里的问题, 需要在文件的开头改一下python解释器。 后面就一路顺风了。

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

设置yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

显然查看一下所有仓库中的docker版本, 选择特点的版本或者最新的稳定版本:

大数据开发环境搭建番外之docker初识_第3张图片
这里下面的第一行就能安装最新稳定版本:

sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

下面启动docker服务,并加入开机启动:

systemctl start docker
systemctl enable docker  # 这个是开机启动

验证安装是否成功 docker version.

大数据开发环境搭建番外之docker初识_第4张图片
这时候就把docker安装成功了。这个东西相对简单些。 docker先安装到这里,很多参考了下面的两篇文章, 具体用到的时候再具体学docker的用法。

参考

  • Centos7 安装docker
  • Docker 入门教程

你可能感兴趣的:(大数据开发学习笔记,大数据,docker,虚拟机)