一、docker 前言
云端服务器都有哪些提供商:
国内:
阿里云(Alibaba Cloud):
- 提供ECS(Elastic Compute Service)弹性计算服务,包括通用型、计算型、内存型等多种实例,满足不同应用场景的需求。
- 支持按需付费、包年包月等多种计费方式。
腾讯云(Tencent Cloud):
- 提供CVM(Cloud Virtual Machine)云服务器,同样包括多种实例类型,如标准型、高性能型、内存优化型等。
- 强调高性能和灵活的资源配置,支持秒级计费和灵活的网络配置。
华为云(Huawei Cloud):
- 推出了ECS弹性云服务器,覆盖入门型、通用型、内存优化型、计算密集型等多种场景。
- 特别强调安全、稳定和高性能,与华为的其他云服务和解决方案紧密集成。
百度智能云(Baidu Cloud):
- 提供CCE(Cloud Container Engine)容器引擎和BCC(Baidu Cloud Compute)云服务器等服务。
- BCC云服务器设计用于各种规模的业务需求,支持快速部署和弹性伸缩。
京东云(JD Cloud):
- 云服务器产品包括云主机、GPU云主机等,满足计算密集型和AI应用需求。
- 强调性价比和服务响应速度。
中国电信天翼云(China Telecom Tianyi Cloud):私有云
- 提供包括云主机在内的全方位云计算服务,侧重于安全合规和企业级服务。
- 利用电信的网络优势,提供稳定可靠的基础设施服务。
中国联通沃云(China Unicom Wo Cloud):
- 提供包括云主机在内的多项云计算服务,适合不同行业和场景。
- 依托联通的网络资源,强调网络质量和地域覆盖广度。
国外:
亚马逊云(Amazon Web Services, AWS):作为全球最大的云服务提供商,AWS 提供了广泛的服务,包括 EC2(Elastic Compute Cloud)云服务器、S3 存储、RDS 数据库服务、ELB 弹性负载均衡等,拥有全球数据中心网络。
微软云(Microsoft Azure):Azure 是一个全面的云服务平台,提供虚拟机、云存储、SQL 数据库等服务,以及强大的人工智能和机器学习功能,具备全球覆盖能力。
谷歌云(Google Cloud Platform, GCP):GCP 提供一系列云服务和工具,如 Compute Engine、Cloud Storage、Cloud SQL 等,依托谷歌的技术实力,特别在大数据处理、人工智能领域有显著优势。
云计算服务模式
云计算的服务模式是分几层的,分别是:
- laaS : Infrastructure (基础设施) -as-a-Service.
- PaaS : Platform (平台) -as-a-Service;
- SaaS : Software (软件) -as-a-Service。
这些服务模式代表了云计算如何为用户提供不同层次的资源和功能,旨在满足不同业务和技术需求。
基础设施在最下端,平台在中间,软件在顶端。
基础设施即服务(IaaS, Infrastructure as a Service)
- 定义:IaaS是云计算的基础层级,它向用户提供虚拟化的计算资源,如虚拟机、存储空间、网络和操作系统。用户可以根据需求租用这些基础设施,并对其进行配置和管理,但无需关心底层硬件的维护。
- 应用场景:适用于需要高度定制化环境的企业,如运行特定应用、开发测试环境、数据备份和恢复等。
平台即服务(PaaS, Platform as a Service)
- 定义:PaaS为开发人员提供了一个完整的开发和部署环境,包括操作系统、数据库、中间件、编程框架等。用户可以在服务商提供的平台上直接开发、运行和管理应用程序,无需关心底层基础设施的细节。
- 应用场景:适合软件开发团队,可以加速应用开发、简化运维工作,如Web应用、移动应用后端、大数据分析平台等。
软件即服务(SaaS, Software as a Service)
- 定义:SaaS是云计算服务的最高层级,直接向用户提供应用程序,用户通过互联网访问并使用这些应用,无需安装或维护软件。所有应用相关的后台管理、数据存储、安全更新等均由服务提供商负责。
- 应用场景:广泛应用于日常办公、CRM、ERP、邮件服务、协作工具等领域,如Office 365、Salesforce、Google Workspace等。
每种服务模式都代表了从基础设施到最终应用的不同层次的服务抽象,用户可以根据自身需求选择合适的服务模式,实现资源的灵活配置和高效利用,同时降低运营成本和提升业务敏捷性。
目前中国使用最多的服务模式是 PaaS ,国外使用最多的是 SaaS。
docker是什么产品?
Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其所有的依赖包打包成一个轻量级、可移植的容器(Container),然后可以在任何支持Docker的Linux或Windows操作系统机器上运行这个容器,实现应用程序的快速部署和一致性运行环境。Docker采用操作系统级别的虚拟化技术,相较于传统的虚拟机技术,它更为轻量级,启动速度快,资源利用率更高。
虚拟化产品有哪些?
服务器虚拟化产品:
- VMware vSphere:包括ESXi hypervisor和vCenter Server,提供企业级的虚拟化解决方案。
- Microsoft Hyper-V:Windows Server内置的虚拟化平台,支持创建和管理虚拟机。
- Xen:开源虚拟化技术,常用于Citrix XenServer和一些Linux发行版中。
- KVM(Kernel-based Virtual Machine):基于Linux内核的开源虚拟化解决方案,广泛应用于云平台。
桌面虚拟化产品:
- VMware Horizon:提供虚拟桌面基础架构(VDI)和应用程序虚拟化。
- Citrix Virtual Apps and Desktops(原XenDesktop):支持交付虚拟应用和桌面到任何设备。
- Microsoft Remote Desktop Services:允许用户远程访问Windows应用和桌面。
存储虚拟化产品:
- VMware vSAN:软件定义的存储解决方案,直接在ESXi主机的本地存储上创建分布式存储层。
- Microsoft Storage Spaces Direct:Windows Server中的存储虚拟化功能,支持使用直接附加存储创建存储池。
- NetApp Data ONTAP:企业级存储虚拟化解决方案,支持数据管理和保护。
网络虚拟化产品:
- VMware NSX:提供软件定义的网络和安全服务,支持网络虚拟化和微分段。
- Cisco ACI(Application Centric Infrastructure):以应用为中心的网络架构,提供网络虚拟化和策略驱动的网络管理。
- Open vSwitch(OVS):开源的虚拟交换机,常用于OpenStack等云平台的网络虚拟化。
容器和轻量级虚拟化产品:
- Docker:容器化平台,用于应用程序的打包、分发和运行。
- Kubernetes(K8s):容器编排系统,用于自动化容器化应用的部署、扩展和管理。
- Linux Containers (LXC):基于操作系统级别的轻量级虚拟化技术,提供容器服务。
虚拟机架构:
① 寄居架构
虚拟机作为应用软件安装在操作系统上
可以在此应用软件上安装多个操作系统
直接安装在硬件上的系统为宿主
本机(真实的操作系统) ----> 虚拟化产品 ----> 虚拟化操作系统或软件
虚拟机监视器:例如 VMware 等
VMware非常强大,真机可以上网,虚拟机也可以上网。
病毒木马都可以拖到虚拟机运行,与真机脱离,非常安全。
但是真机一旦崩了,虚拟机当然也崩了。所以实际生产环境用的是 源生架构
② 源生架构
虚拟机软件直接安装在计算机硬件上
虚拟机本身就是一个操作系统
在这个虚拟机中可以同时运行多个操作系统
裸金属 服务器 ---> 虚拟化产品
虚拟化技术概述
虚拟化技术允许在单一物理硬件上创建和运行多个独立的虚拟环境,核心分类包括仿真虚拟化、半虚拟化和全虚拟化,每种技术各有侧重:
- 仿真虚拟化:无需硬件支持,兼容性强,能在不同架构间运行操作系统,但性能较低。
- 半虚拟化:需修改客户系统以提升性能,直接与虚拟化层通信,适用于特定场景和注重性能的环境。
- 全虚拟化:现代技术大多结合硬件辅助,以实现接近原生的性能,同时保持高度兼容性,适用于广泛场景。
主流虚拟化产品对比
1. VMware系列
- VMware Workstation: 面向个人用户的Windows或Linux上的虚拟机软件,适合开发、测试及多系统体验。
- VMware Fusion: 专为Mac设计的虚拟化软件,允许在Mac上运行Windows及其他操作系统。
- VMware ESXi & vSphere: 企业级裸金属虚拟化平台,直接安装在物理服务器上,提供高性能和集中管理能力。可通过客户端或网页端访问管理界面,网页端逐渐成为主流,便于远程管理和维护。
之前用的是客户端连接 VMware vsphere
现企业 使用 网页端连接 VMware vsphere
2. KVM/OpenStack
- KVM: 基于Linux内核的虚拟化技术,开源且强大,尤其适用于构建私有云环境。与OpenStack等云平台结合,提供全面的虚拟化解决方案,适合大规模部署和服务自动化。
3. Xen
- Xen Hypervisor: 是一个成熟的开源虚拟机监视器,特别是与RHEL(Red Hat Enterprise Linux)5紧密集成,支持半虚拟化和全虚拟化,适用于企业级服务器虚拟化场景。
4. 其他半/全虚拟化产品
- Hyper-V (微软): 微软开发的虚拟化平台,特别适合Windows环境,广泛应用于Windows Server,支持半虚拟化技术。
- VirtualBox: 一款广受欢迎的免费虚拟机软件,适用于多种操作系统,支持全虚拟化,适合开发测试和教育用途。
- Citrix Hypervisor: 前身为XenServer,专注于提供高效的服务器和桌面虚拟化解决方案,适用于企业环境,支持全虚拟化。
重点:
① KVM 全虚拟化产品 调用linux内核 来完成
② ESXI (裸金属虚拟化) 企业用的特别多 除了云 就是它
二、docker 概述
docker 发展历史Docker入门笔记01:Docker容器技术的发展历程【转】 - 融爸 - 博客园 (cnblogs.com)
Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。
docker容器的优点
容器化越来越受欢迎,因为容器:
●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
Docker与虚拟机的区别:
特性 | Docker容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
计算能力损耗 | 几乎无 | 损耗 50%左右 |
性能 | 接近原生 | 弱于 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 资源隔离/限制 | 完全隔离 |
容器技术有哪些
- docker
- podman : 与docker相似 OCI redhat
- K8s
- container : docker核心组件之一
- LXC : linux 容器化技术
- crio: 轻量级 专门用于 k8s
- apche mesos : 容器编排平台
容器在内核中支持2种重要技术
docker本质就是宿主机的一个进程,docker是通过 namespace 实现资源隔离,通过 cgroup 实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。
namespace的六项隔离
namespace | 系统调用参数 | 隔离内容 |
---|---|---|
UTS | CLONE_NEWUTS | 主机名与域名 |
IPC | CLONE_NEWWIPC | 信号量、消息队列和共享内存 |
PID | CLONE_NEWPID | 进程编号 |
NETWORK | CLONE_NEWNET | 网络设备、网络栈、端口等 |
MOUNT | CLONE_NEWNS | 挂载点(文件系统) |
USER | CLONE_NEWUSER | 用户和用户组(3.8以后的内核才支持) |
Docker核心概念:
●镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。
●容器
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。
镜像 nginx (run) 起来之后的一个实例,可以把容器看做时一个简易版的linux环境容器 就是集装箱(logo上的集装箱)
●仓库
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker
仓库就是存放镜像的地方,仓库 分为 公有仓库 docker hub 私有仓库 harhor
三、安装docker
目前 Docker 只能支持 64 位系统。
systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
-----------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备
驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
-----------------------------------------------------------------------------------------
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io 安装最新版本
若想安装docker-ce-20.10.18,把docker-ce改成docker-ce-20.10.18即可
systemctl start docker.service
systemctl enable docker.service
-----------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责
管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大
部分情况下Docker服务端和客户端运行在一台机器上。
-----------------------------------------------------------------------------------------
查看 docker 版本信息
docker version
docker 信息查看
docker info
[root@zk-kfk01 ~]# docker info
Client: Docker Engine - Community
Version: 26.0.2
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.0
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.26.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0 # 容器数量
Running: 0
Paused: 0
Stopped: 0
Images: 0 # 镜像数量
Server Version: 26.0.2 # server 版本
Storage Driver: overlay2 # docker 使用的是 overlay2 文件驱动
Backing Filesystem: xfs # 宿主机上的底层文件系统
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs # Cgroups 驱动
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e377cd56a71523140ca6ae87e30244719194a521
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-693.el7.x86_64 # 宿主机的相关信息
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.781GiB
Name: zk-kfk01
ID: b99d1afe-6152-4488-bedf-1b9936b6ab67
Docker Root Dir: /var/lib/docker # docker 数据存储目录
Debug Mode: false
Registry: https://index.docker.io/v1/ # registry 地址
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors: # 加速站点
https://6ijb8ubo.mirror.aliyuncs.com/ 要改
Live Restore Enabled: false