传统虚拟技术:
传统的虚拟机技术通过在物理硬件上运行虚拟化层(Hypervisor),将物理资源(如处理器、内存、存储等)虚拟化为多个独立的虚拟机。每个虚拟机都有自己的操作系统和应用程序,它们在各自的虚拟环境中运行,并与物理硬件和其他虚拟机隔离开来。
然而,传统虚拟机的运行需要占用较高的资源,包括磁盘空间、内存和处理器性能。每个虚拟机都需要完整的操作系统和应用程序副本,这在资源利用和启动时间上存在一定的开销。
一、什么是Docker?
容器技术则是在虚拟化领域的进一步演进,它采用了更轻量级的虚拟化方式。容器技术利用操作系统的容器化功能(如Linux容器),通过隔离进程的命名空间、文件系统和资源控制组(cgroups)等功能,实现了应用程序的隔离和运行环境的虚拟化。 Docker作为创建容器的主流工具,近年来迅速发展,它的优势在于可以让开发者将企业需要的各种应用及应用依赖文件封装在Docker镜像文件中,然后在任何物理设备(Linux设备或Window设备等)上安装运行实现虚拟化,让应用程序彻底脱离底层设备,可以在物理机之间灵活迁移部署,使运维工程师摆脱了繁琐的环境部署,极大的提高了工作效率,同时减少了部署过程中的潜在风险。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。 Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的“Build once,Run anywhere” 更多信息请参考: baike.baidu.com/view/118549…
Docker容器 VS 虚拟机(VM)
虚拟机(VM):
使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等。
Docker容器:
使用Docker引擎进行调度和隔离,提高了资源利用率,在相同硬件能力下可以运行更多的容器实例;每个容器拥有自己的隔离化用户空间。
相较于VM,Docker容器作为一种轻量级的虚拟化方式,在应用方面具有以下显著优势:
Docker容器可以在秒级时间内快速启动和停止,相较传统虚拟机显著提升。
Docker容器对系统资源要求低,数千个Docker容器可同时运行在同一个主机上。
Docker容器通过类似Git的操作来方便用户获取和更新应用镜像。
Docker容器通过Dockerfile配置文件实现自动化创建和灵活部署,提高工作效率。
Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。
Docker架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
Docker“组件间”关系
主机:运行容器的机器
镜像:文件的层次结构,以及包含如何运行容器的元数据, Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上
容器:一个从镜像中启动,包含正在运行的程序的进程
Registry(镜像仓库):存放镜像的地方,如:Harbor
Volumn(卷):将物理机的文件夹挂载到容器内部.与openstack的volumn不一样,openstack中的卷是块存储,不能共享。而这里的volumn可以共享。
Dockerfile:用于创建镜像的脚本
Docker四大特点
轻量化:
Docker容器是基于操作系统层面的虚拟化技术,相对于传统的虚拟机来说,容器更加轻量级。每个容器共享主机的操作系统内核,只包含应用程序及其运行所需的依赖项,因此容器的启动和停止速度非常快。
隔离性:
每个Docker容器都是相互隔离的,具有自己的文件系统、进程空间和网络接口。这意味着容器之间相互独立,互不影响,可以在同一主机上同时运行多个容器,每个容器都像一个独立的虚拟环境。
可移植性:
Docker容器可以在不同的操作系统和云平台上运行,具有很强的可移植性。容器内部的应用程序及其依赖项被打包成一个独立的、可移植的单元,可以轻松地在开发、测试和生产环境之间进行部署和迁移。
可扩展性:
Docker容器可以很容易地进行水平扩展。通过使用容器编排工具(如Docker Compose、Kubernetes等),可以根据需求自动或手动地启动、停止和管理多个容器实例,以满足不同的负载需求。
三、安装Docker
这里仅仅针对CentOS7做说明,其他的Linux都差不多,此处我们分四步: 1.卸载系统自带版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2.安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
3.配置yum源
CentOS7的docker是在epel源里面,epel源默认是启动。但是我们一般不用,版本可选性较少。我们需要采用如下命令配置docker 源 yum-config-manager --add-repo mirrors.aliyun.com/docker-ce/l…
4.安装
查看可用版本
yum list docker-ce.x86_64 --showduplicates | sort -r
安装指定版本
yum install -y docker-ce-24.0.4-1.el7
安装完毕后,使用命令 docker version查看版本并确定是否安装成功
五、常用命令
systemctl start docker 启动docker服务
systemctl enable docker 开机自启docker服务
systemctl status docker 查看docker服务状态
systemctl stop docker 停止docker服务
docker start 容器名 启动容器
docker stop 容器名 停止容器
docker restart 容器名 重启容器
docker rm 容器名 删除容器(已停止)
docker info 查看docker相关信息
docker ps –a 列出所有容器
Docker logs 容器名 获取容器的日志
参考: www.runoob.com/docker/dock…
六、Dockerfile简介 什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。