在常州 做兼职上什么网站,模板网站 怎么做优化,html5个人博客网站模板,定制品牌排行榜前十名文章目录 Docker安装Docker简介1.什么是虚拟化、容器化?2. 为什么需要虚拟化、容器化#xff1f;3. 虚拟化的实现方式主机虚拟化的实现方式容器虚拟化实现 4. 虚拟机和Docker的区别 Docker安装
基于Centos7进行安装
1.确认系统版本和CPU架构#xff0c;Centos7的x86_64架构… 文章目录 Docker安装Docker简介1.什么是虚拟化、容器化?2. 为什么需要虚拟化、容器化3. 虚拟化的实现方式主机虚拟化的实现方式容器虚拟化实现 4. 虚拟机和Docker的区别 Docker安装
基于Centos7进行安装
1.确认系统版本和CPU架构Centos7的x86_64架构
# cat /etc/*release*
# uname -a2.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine3.卸载历史版本
# 执行卸载
# yum remove docker-ce docker-ce-cli containerd.io dockerbuildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 删除目录
# rm -rf /var/lib/docker
# rm -rf /var/lib/containerd# 根据实际情况删除配置文件和对应镜像目录
# rm -rf /data/var/lib/docker
# rm -rf /etc/docker/daemon.json4.获取yum源,
# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
配置使用国内源
# sed -i s//download.docker.com//mirrors.ustc.edu.cn/docker-ceg /etc/yum.repos.d/docker-ce.repo5.安装并启动docker
# yum install -y docker-ce docker-ce-cli containerd.io dockerbuildx-plugin docker-compose-plugin
# systemctl start docker
# systemctl enable docker
# systemctl status docker6.验证
# docker version
# docker info7.修改docker安装目录和拉取镜像国内源
Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像所以我们在安装的时候需要考虑这个目录的空间拉取镜像的时候使用国内源可以加快速度。
# cat /etc/docker/daemon.json
{registry-mirrors: [https://dockerproxy.com,https://hub-mirror.c.163.com,https://mirror.baidubce.com,https://ccr.ccs.tencentyun.com],data-root : /data/var/lib/docker
}
# systemctl daemon-reload
# systemctl restart dockerDocker简介
1.什么是虚拟化、容器化?
物理机只的是实际的服务器或者笔记本等对实体机器的称呼物理机器给虚拟机提供了硬件环境有时候也称为宿主机。虚拟化是指通过虚拟化技术将一台物理计算机虚拟为多台计算机将一台计算机上同时运行多个逻辑计算机每个逻辑计算机可运行不同的操作系统并且这多个计算机的应用程序都可以在相互独立的空间内运行且互不影响也就是在硬件层面的虚拟化比如腾讯云阿里云这些云服务器把一台物理机虚拟成多台计算机给用户使用。容器化容器化是一种虚拟化技术又称操作系统层虚拟化虚拟的是操作系统层面容器之间共享宿主机系统内核。
2. 为什么需要虚拟化、容器化
资源利用率高将利用率较低的服务器资源进行整合用更少的硬件资源运行更多的业务环境标准化使用容器化可以让开发、测试、生产环境保持一致Docker的镜像提供了除内核外完整的运行时环境保证了环境的统一性。资源弹性伸缩根据不同的场景动态调整存储、网络、计算等硬件资源请求压力大了就扩容等压力平稳了进行收回。差异化环境提供同时提供多套差异化的执行环境限制环境使用资源。比如我的服务一个以来 Ubuntu 操作系统一个服务依赖 CentOS 操作系统但是没有预算购买两个物理机这个时候容器化就能很好的提供多种不同的环境。沙箱安全如果在服务器执行了rm -rf /这样的危险命令如果是在容器内就可以保证我们物理主机的安全容器对比虚拟机启动更快传统的虚拟机技术启动应用服务往往需要数分钟而 Docker 容器应用由于直接运行于宿主内核无需启动完整的操作系统因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。更好的维护和复用Docker 使用的分层存储以及镜像的技术使得应用重复部分的复用更为容易也使得 应用的维护更新更加简单基于基础镜像进一步扩展镜像也变得非常简单。Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像既可以直接在生产环境使用又可以作为基础进一步定制 。
3. 虚拟化的实现方式
应用程序执行环境分层 硬件层提供硬件抽象包括指令集架构、硬件设备及硬件访问接口操作系统层 提供系统调用接口管理硬件资源程序库层提供数据结构定义及函数调用接口
主机虚拟化的实现方式
主机虚拟化的原理是通过在物理服务器上安装一个虚拟化层来实现。这个虚拟化层可以在物理服务器和客户操作系统之间建立虚拟机使得它们可以独立运行。 这个虚拟化层一般通过一个软件来实现比如说Vmware。
容器虚拟化实现
容器虚拟化实现原理 容器虚拟化有别于主机虚拟化是操作系统层的虚拟化。通过 namespace 进行各程序的隔离加上 cgroups 进行资源的控制以此来进行虚拟化。容器虚拟化基础之 NameSpace 什么是 Namespace(命名空间 namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源而另外一些进程也只能看到与它们自己相关的资源这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。 Linux namespaces 是对全局系统资源的一种封装隔离使得处于不同 namespace 的进程拥有独立的全局系统资源改变一个 namespace 中的系统资源只会影响当前namespace 里的进程对其他 namespace 中的进程没有影响。
控制组Control Groups
Docker使用Linux内核的控制组功能通过控制组可以限制容器使用的资源如CPU、内存、磁盘IO等。这样可以确保容器之间资源的隔离和公平分配。
4. 虚拟机和Docker的区别
虚拟机Docker磁盘占用几个G到几十个G几十M到几百MCPU和内存占用虚拟操作系统非常占用CPU 和内存需要通过虚拟层调用占用率高Docker 引擎占用资源极低直接作用于硬件资源占用少启动速度从开机到启动项目几分钟从开启容器到运行项目只需几秒安装管理需要专门的运维技术通过镜像仓库安装、管理方便应用部署手动部署速度慢体系化部署可以自动化速度快隔离性系统级别进程级别封装程度打包整个操作系统打包项目代码和依赖信息
Docker 为什么比虚拟机资源利用率高启动快
轻量级Docker容器是基于操作系统级别的虚拟化而虚拟机是基于硬件级别的虚拟化。Docker容器共享宿主机的操作系统内核因此不需要额外的操作系统启动和资源消耗相比之下虚拟机需要独立的操作系统和资源管理。资源隔离Docker使用Linux内核的命名空间和控制组来实现资源隔离。每个Docker容器都可以被限制在一定的资源范围内如CPU、内存和磁盘等。这种细粒度的资源控制使得Docker容器可以更有效地利用宿主机的资源。共享文件系统Docker使用联合文件系统来构建容器的文件系统。联合文件系统允许多个容器共享相同的基础镜像并在其上添加自己的文件系统层。这种共享文件系统的机制使得容器的启动速度更快因为不需要为每个容器复制完整的操作系统文件。镜像管理Docker使用镜像来构建容器。镜像是一个只读的文件系统包含了运行一个容器所需的所有文件和配置。镜像可以通过分层的方式进行管理每个镜像层都可以被共享和重用。这种镜像管理的机制使得容器的启动速度更快因为只需要加载和启动必要的镜像层。docker 有比虚拟机更少的抽象层。 docker 不需要 Hypervisor 实现硬件资源虚拟化运行在 docker 容器上的程序直接使用的是实际物理机的硬件资源。因此在 cpu、内存利用率上 docker 将会在效率上有明显的优势。 docker 利用的是宿主机的内核而不需要Guest OS节省了 Guest OS 占用的资源。docker 不需要 Guest OS创建一个容器时不需要和虚拟机一样重新加载一个操作系统内核。从而避免引寻、加载操作系统内核返回时耗时耗资源的过程当新建一个虚拟机时虚拟机软件需要加载 Guest OS,返回新建过程是分钟级别的。而新建一个docker 容器只需要几秒钟