Docker-导言

Docker-导言

Docker出现的原因

每一款产品的出示都是为了解决一些痛点问题

相信我们都经历过这种场景

我们的项目在本地跑起来一点毛病都没有

开心地将jar包分享给同学

过了一会,同学一脸嫌弃地找你去看他在服务器上运行后齐刷刷的报错信息,觉得你写的代码不行,跑都跑不起来

看了报错,发现他没有安装redis,没有安装es,没有安装mysql等等软件

这时候就很无奈了,只能帮其一步步进行安装,进行配置

安装完成后,可能还要调一堆的bug,浪费了大量的时间


我们现在的结构是(Linux + jar + Redis环境 + ES环境 + Mysql环境… )

这就会导致上面出现的问题,就算他早就安装了这些软件,如果版本和你使用的不一致,那么也有可能报错

这时候,就希望有样东西可以帮我们解决这个问题

那么这个东西就是Docker

在使用Docker之后,结构就变成了(Linux+(jar + Redis环境 + ES环境 + Mysql环境… ))

将jar包和环境一起打包,就不会出现开头出现的问题啦

下面让我们来学习Docker吧

认识Docker

传统运行应用

所有的应用都是跑在同一个宿主机上

使用共同的类库(Lib)

所以请你想象这种场景:

APP1(将其比作放射物质)+APP2(将其比作食物)

那么这种情况下,APP2会被APP1破坏

如果有些应用又依赖APP1,那么就会牵扯很多应用无故躺枪

导致Linux大环境牵连受损,很难处理

当我们使用了Docker技术之后

所有的应用都是在Docker的管理下运行的

这里的应用就要换个名字了,叫容器

每一个容器都有一套自己的环境,并且不会受到其他容器环境的影响,容器之间是相互隔绝的

就算有两个水火不容的应用出现在了同一个容器中,也不会影响到其他容器的环境

下面看一下Docker官方给出的一张体系架构图

优势

传统虚拟机技术 VS Docker容器技术

虚拟机实现资源隔离的方法是利用独立的OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现的

Docker比虚拟机有更少的抽象层,不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源

而虚拟机加载GuestOs是分钟级启动的

docker利用的是宿主机的内核,而不需要Guest OS。

因此,Docker通过镜像新建一个容器的时候,不需要像虚拟机一样重新加载一个虚拟机内核

我们知道,引导、加载操作系统内核是一个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。

而docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个docker容器只需要几秒钟。

另外,现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的

所以docker对比虚拟机在资源消耗上也占有比较大的优势。

在一台物理机上我们可以很容易建立成百上千的容器,而只能建立几个虚拟机

安装Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#卸载之前的Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#下载需要的安装包
sudo yum install -y yum-utils

#设置镜像仓库
sudo yum-config-manager \
--add-repo \
https:\\download.docker.com\linux\centos\docker-ce.repo#默认是国外的

sudo yum-config-manager \
--add-repo \
https:\\mirrors.aliyun.com\docker-ce\linux\centos\docker-ce.repo#阿里云的


# 更新yum软件包索引
sudo yum makecache fast

#安装Docker引擎 docker-ce docker-ee
sudo yum install docker-ce docker-ce-cli containerd.io

#启动docker
sudo systemctl start docker

#测试是否启动成功
docker version

如果你购买了阿里云、百度云、腾讯云的服务器,可以配置一个容器镜像加速

这个镜像加速走的是服务器内网,写我的也没有用哦

卸载Docker

1
2
3
4
5
6
#卸载docker依赖
sudo yum remove docker-ce docker-ce-cli containerd.io

#删除资源
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
给作者买杯咖啡吧~~~