今日内容概要
- docker介绍
- 什么是虚拟化
- 容器与虚拟机的比较
- Docker的概念
- Docker安装
今日内容详细
虚拟化
什么是虚拟化
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。
虚拟化的软件有哪些
1.对机器进行虚拟化
1.kvm(Kernel-based Virtual Machine的简称):开源的免费的,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中
2.exsi:vmware商用的,装在裸机上,可以虚拟化出很多机器
3.vmware 装的哪个虚拟机软件VMware Workstation Pro
2.对虚拟机进行管理
1.openstack(python开发的,开源的):电信云,华为云 openstack 管理云平台:对虚拟化出的虚拟机进行管理--->创建虚拟化,删除虚拟机
2.阿里云(自研,阿里飞天):云服务器,到一个网站,点点--->付款--->完成
3.腾讯自研
3.容器管理
1.docker:容器技术-->学习--->创建一个个容器
2.docker-compose:单机容器管理(编排)
3.docker-swarm:docker官方出的,用的很少
4.k8s:多机容器管理,容器编排:谷歌公司出的
名词补充:linux的软件
1.nginx:反向代理服务器-->web项目上线-->请求转发-->负载均衡
2.paramiko:python的模块,ssh链接操作linux机器,远程执行命令
3.ansible:python写的,基于paramiko封装-->基于ssh链接-->速度慢一些--->管理机器少一些
指令,palybook-->批量操作远程linux机器
python的sdk:包
4.salstack:批量管理远程linxu机器的--基于bs架构:主控机(salstack服务端)--被控机(salstack客户端)
5.zabbix:监控php写的有web页面--->监控 进程
6.普罗米修斯:go语言写的 ,监控容器运行,没有web页面
7.granfan:前端-->对接上普罗米修斯--->显示监控情况
8.jenkins:java写的 持续集成工具,用于监控持续重复的工作
9.gitlab:代码仓库
docker是什么
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 [GitHub](https://github.com/docker/docker) 上进行维护
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现【轻量级的操作系统虚拟化解决方案】。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的【容器就像操作一个快速轻量级的虚拟机】一样简单。
容器与虚拟机的比较
docker 不需要虚拟化出操作系统这一层,它使用的就是宿主机的操作系统资源,与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
Docker概念
1.docker是cs架构,mysql,redis,客户端和服务端要通信,底层tcp协议,自己做封装
mysql://地址+端口
redis://地址+端口
http://地址+端口
docker的客户端和服务端要通信 没有自定义协议,使用的http协议,符合resful规范
2.镜像和容器
Docker镜像:镜像是基于一堆文件,类似于:虚拟机装操作系统的centos xx.iso 文件,4个多g,带了软件--->一堆文件
Docker容器:镜像运行起来,成为了容器,可以当成一台虚拟机上面装了一些软件
一个镜像-->运行出多个容器--->容器当成轻量级的操作系统
类似于:类和对象的概念
镜像是类--->生成多个对象
3.Registry(注册中心)-docker仓库拉取镜像的位置
-镜像从哪里来?
-注册中心中拉取下来
Docker安装
# 在linux机器上安装
0.卸载docker
yum remove docker docker-common docker-selinux docker-engine
rm -rf /var/lib/docker
1.yum 包更新到最新
sudo yum update
2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源为阿里云(清华)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
4.安装docker
sudo yum install docker-ce
5.安装后查看docker版本
docker -v
# Docker version 24.0.5, build ced0996
6.启动docker
systemctl status docker # 状态
systemctl start docker # 启动
systemctl stop docker # 关闭
11 docker exec -it 容器id号 /bin/bash
常用命令
拉取镜像
拉取镜像就是从中央仓库中下载镜像到本地
docker pull 镜像名称
docker pull centos:7
docker pull redis
docker pull mysql:5.7
查看本地镜像
docker images
"""
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
"""
运行成容器
docker run -di --name=容器名称 镜像名称:标签
运行cento7镜像成容器
docker run -di --name=centos centos:7
查看正在运行的容器
docker ps
登录守护式容器方式
docker exec -it 容器id号 /bin/bash
docker exec -it fe917a71d809 /bin/bash
退出当前容器
exit