什么是Docker
Docker是基于Go语言实现的云开源项目,本身是一个容器运行载体或称之为管理引擎。
Docker的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的程序及运行环境能够做到"一次镜像,处处运行"
Docker与虚拟机
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面上实现虚拟化,在其上运行一个完整操作系统
Hypervisor:一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。
虚拟机的缺点:资源占用多、冗余步骤多、启动慢
为什么选择Docker
Docker的基本组成
镜像
一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。Docker镜像文件类似于Java的类模板,而Docker容器实例类似于java中new出来的实例对象
容器
容器类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离,保证安全的
仓库
集中存放镜像文件的场所,最大的公开仓库是Docker Hub(https://hub.docker.com/)
Docker运行基本流程
1:用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者
2:Docker Daemon提供Docker Server的功能使其可以接收Docker Client的请求
3:Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job形式存在
4:Job运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储
5:当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
6:当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成
7:Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontaine来实现具体对容器进行的操作
Docker安装与配置
1:卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2:yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
3:执行命令
sudo yum install -y yum-utils
4:设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5:更新yum软件包索引
yum makecache fast(centos8去掉fast)
6:安装Docker CE
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7:启动docker
systemctl start docker
8:测试
docker version
docker run hello-world
9:卸载
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
阿里云镜像加速器配置
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
标签:容器,理念,ce,第一章,yum,镜像,docker,Docker From: https://www.cnblogs.com/tianshu/p/17072011.html