Docker初识
什么是Docker呢?
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal)、OpenStack 集群和其他的基础应用平台。
简单点理解呢:Docker是一个管理容器的平台
简单介绍一下容器和虚拟机:
- 虚拟机:虚拟出一套硬件,在其之上的一个运行一个完整的操作系统
- 容器:容器之间互相隔离,但共享这同一份硬件系统
我们平时会在电脑上安装各种软件,比如微信,QQ。那么我们Docker呢,在想的是把一个系统看成一个软件,我们安装一个软件(本质是一个系统),比如,你现在的操作系统有很多软件,假设,你要换到一台新的电脑是不是要重新安装软件呢,这就很麻烦了,我们可以直接把你的系统当作一个软件,直接一安装就和你旧的电脑一摸一样了。
Docker的好处:
- 轻:开启速度快,因为不像Vmware那样子有一套虚拟化硬件,所以快
- 开发运维一致性:不会再对环境不一样起争议
- 弹性大:这点解释下,比如我现在一台服务器不够用的情况下,理论上是要新建一台服务器,但是新建的过程是很费时间的,因为有各种配置文件,所以,在Docker里,当不够用的时候,不过是安装多一个容器的事情,容器里面什么都做好了
- 安全:怎么捣鼓都是在容器里,实在不行,删了重建而已,不会影响导别的容器
附上一张图,以供了解:
那么Docker有几个核心概念:
- 仓库
- 镜像
- 容器
简单描述如下:
-
容器呢就是我们实际运行的东西
-
镜像呢就是用生成容器
这里可以这么理解为:用面向对象的思想来说,镜像就是类,容器就是实例对象
-
仓库呢就是用来放镜像的
首先简单跑一个Docker例子
首先开启我们的虚拟机,我这里是Centos7,不同虚拟机可能有一点点差别,总体来说差别不大:
安装docker
这里要注意一点:
Centos 需要内核版本为3.8以及以上才能运行Docker
(命令不包含$符号)
//查看内核版本
$ uname -r
//安装docker
$ sudo yum install docker
启动docker
//启动 docker
$ systemctl start docker
//将 docker 服务设为开机启动
$ systemctl enable docker
//查看 docker版本,验证启动成功
$ docker -v
拉取一个Centos镜像
拉取之前,先要搜索
$ docker search centos
OFFICIAL :代表官方
这里拉取的时候,默认是很慢的,因为使用的源地址是国外的,速度非常非常慢
为了提高速度,可以换取阿里或者网易的源
我这里使用的是阿里云
首先得注册一个阿里云账号,进入控制台找到
在这里可以看到加速器的地址,由于每个人的加速器地址,我这里就教下怎么配置
//打开配置文件
$ vi /etc/docker/daemon.json
//配置下面这段
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
接下来开始正式拉取镜像
$ docker pull centos
//查看所有镜像
$ docker images
什么!!!只有两百M?对的,就是这么小,为什么,因为没有虚拟出一套物理硬件,单纯在硬件之上的层次,就这么小
默认的就是拉取最新版
如果想拉6的怎么办
指定一下就可以了
$ docker pull centos:centos6
那么我怎么知道标签是多少呢???
去官网https://hub.docker.com/_/centos查就可以了
最后一步!!!
创建容器
//docker run 镜像名字:标签,这里 -it代表交互
$ docker run -it centos:latest
此时就跑起来了
这就跑起来了一个建立在你虚拟机上的一个centos,而且秒开
你可以在这个界面里输入一些Linux指令也是可以行的,如果要退出
有两种方式
//第一种 退出容器,且杀死容器,说白了就容器没了
$ exec
//第二种,退出容器,且容器后台运行,可以重新进入
$ ctrl+p+q
//检查所有容器的状态
$ docker ps -a
本章就到此结束了,算入个门吧,复杂的东西,后面再讲