一 Docker是什么
- 为何会有docker出现:方便代码环境交付
- docker理念:一次封装,到处运行
- 一句话:解决运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
二 与虚拟机的区别
虚拟机是带环境安装的虚拟系统,可以在一种操作系统中运行另一种操作系统,看上去和实际系统一样,对底层系统来说,虚拟机就是一个普通文件,不需要了就删除
缺点是虚拟机中包含的硬件软件都会虚拟,比较复杂,分钟级启动,资源占用多,冗余步骤多,部署复杂
linux容器不是模拟一个完整的操作系统,而是对进程进行了隔离,将软件运行所需要的资源打包到一个隔离的容器中,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一整个完整操作系统,在该系统上再运行所需应用进程
- 容器内的应用进程是直接运行于宿主的内核,同期内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更轻便
- 每个容器互相隔离,文件资源运行互不影响
Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用宿主机的硬件资源,因此在资源的占用上Docker有明显的优势
三 Docker 安装
1 前提原理
- centos必须6.5以上
- 仅支持2.6.32-431版本及以上的内核版本,查看内核版本命令如下
[root@192 docker]# uname -r
3.10.0-1127.el7.x86_64
2 Docker基本构成
镜像(image):一个只读的模板,用于创建docker实例(容器),一个镜像可以创建多个容器
容器(container):用镜像创建的运行实例,可以启动删除等操作,可以 将其看做一个简易版的linux环境,几乎和镜像一样,也是一堆层的统一视角
仓库(repository):储存镜像的地点,仓库和仓库注册服务器(registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库又分为公开仓库(public)和私有仓库(private)两种形式,最大的公开仓库是Docker Hub,国内的公开仓库包括阿里云,网易云等
3 安装步骤
(1) centos6
# 安装epel-release
[root@slave1 ~]# yum -y install epel-release
# 安装docker
[root@slave1 ~]# yum install -y docker-io
# 安装后的配置文件
[root@slave1 ~]# /etc/sysconfig/docker
# 启动docker后台
[root@slave1 ~]# service docker start
# docker version验证
[root@slave1 ~]# docker version
(2) centos7(这个博客多得很)
官网安装参考手册:Redirecting…https://docs.docker.com/install/linux/docker-ce/centos/
中文版手册版本较老,建议以英文版为准
# 确定是centos7及以上版本
[root@192 docker]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# yum安装gcc相关注意centos7系统主机要能上外网
[root@192 docker]# yum -y install gcc
[root@192 docker]# yum -y install gcc-c++
# 卸载旧版本
[root@192 docker]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装需要的软件包(初次安装需要 这个命令)
[root@192 docker]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 设置stable镜像仓库 ,这个大坑!
# 注意!!!!其实官网没错,但是由于国内有防火墙,官网链接会 很慢 ,会导致Err14,Err12等错误
# 建议使用国内的镜像仓库,阿里云大法好
[root@192 docker]# yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引,这个英文手册没有,不过还是加一下
[root@192 docker]# yum makecache fast
# 安装docker ce
[root@192 docker]# yum -y install docker-ce
# 启动docker
[root@192 docker]# systemctl start docker
# 测试
[root@192 docker]# docker version
配置镜像加速
如图获取自己的阿里云加速链接
[root@192 docker]# mkdir -p /etc/docker
[root@192 docker]# vim /etc/docker/daemon.json
# 注意与centos6不同,字段内容如下:
# 网易云
{"registry-mirrors":["http://hub-mirror.c.163.com"]}
# 阿里云
{
"registry-mirrors":["https://【自己的编码】.mirror.aliyuncs.com"]
}
[root@192 docker]# systemctl daemon-reload
[root@192 docker]# systemctl restart docker
四 卸载
[root@192 docker]# systemctl stop docker
[root@192 docker]# yum -y remove docker-ce
[root@192 docker]# rm -f /var/lib/docker
五 底层原理
1 Docker如何工作
docker是一个C/S结构的系统,Docker守护进程运行在主机上,然后通过 socket链接从客户端访问,守护进程从客户端接收命令并管理运行于主机上的容器,容器是一个运行时环境
2 为何docker比VM快
- docker有更换搜啊的抽象层,由于不需要hypevisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU和内存等利用上优于VM
- docker利用的是宿主机的内核,不需要Guest OS,因此在 创建一个容器时,docker不需要想虚拟机一样重新加载一个操作系统内核,因而避免引寻,加载中间层的过程,所以创建一个docker容器只需要几秒钟