docker for win7可以修改虚拟机的ip吗?

docker for win7可以修改虚拟机的ip吗?,第1张

不是,

Docker和VM的最大区别就是,一个是 *** 作系级虚拟化,一个是硬件级虚拟化。因此, Docker本身就是可以运行在VM之上的。不能说在windows上装个虚拟机,然后再运行一个Docker,就说docker支持windows吧。为了让docker能在VM上运行,docker专历谨哪门开发了Docker Toolbox和docker-machine,其核心都是通过虚拟机来运行docker,只不过是帮用户简化了中间的部署和配晌扒置流程。针对本次的Beta发布,更多的是优化的工作。笔者也提交了试用申请,然后进入了长长的waiting-list,不过我猜测,这次的版本改进主要体现在以下几个方面:

通过使用轻量级的linux发行版本,使VM更小,部署和安装更快。Alpine linux是一个非常轻量级的发型版,而且docker也有计划让alpine作为默认的基础镜像。

原生工具集支持。以前我们在非linux下运行时,都需要借助于类似MINGW的工具,模拟一下Shell。而这次Beta的退出,在这方面肯定是加强了,支持了原生态的命令。

更好的网络支持。可能会将Docker的网络系统集成到Mac和Windows的原生网络系统中,方便用户配置。

更好的对系统沙盒的适配。OS X和Windows本身都是支持沙盒的,可能在这方面会有所加强。

那么为什么原生态的windows和mac那么难支持呢肢码?这必须从docker的基本原理说起:

CGroup技术,这是用来控制CPU、内存、网络等资源限制的,这需要内核的支持,而目前只有linux的支持比较好。

lNamespace技术,这是用来做用户资源隔离的,注意这里是隔离,是让一个进程成为一个沙盒,拥有完全独立的PID,网络栈,主机名等,而这一技术目前也是只有linux支持比较好。

一、什么是容器

容器是一种基础工具,泛指任何可以用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品;物体可以被放置在容器中,而容器可以保护内容物;

人类使用容器的历史至少有十万年。

二、虚拟化的实现

1、主机级虚拟化

此实现是在宿主机上安装虚拟机管理软件,而后虚拟出N个完整的系统,每一个系统都有自己的内核。有两种类型的实现

1.1、Type-I类型(在宿主机上直接安装Virtual machine Manager,不需要在宿主机上安装 *** 作系统)

xen、ESX/ESXI

1.2、Type-II类型(需要基于宿主机的 *** 作系统之上安装Virtual Machine Manager)

VMware Workstation、kvm、VirtualBox

2、容器级别虚拟化

此实现不在为每一个虚拟机创建单独的内核,而是通过在宿主机的内核上将6种资源通过内核机制(namespaces)隔离出来,每一个namespace是一个单独的容器(虚拟机)

至今位置,整个linux领域的容器技术,就是靠内核级的6个namespaces、chroot和Cgroups共同实现

2.1、Linux Namespaces

namespace 系统调用参数 隔离内容 内核版本

UTS CLONE_NEWUTS 主机名和域名 2.6.19

IPC

CLONE_NEWIPC 信号量、消息队列和共享内存 2.6.19

PID CLONE_NEWPID 进程编号 2.6.24

Network CLONE_NEWNET 网络设备、网络栈、端口等 2.6.29

Mount CLONE_NEWNS 挂载点,文件系统 2.4.19

User CLONE_NEWUSER 用户和用户组 3.8

2.2、Control Groups(CGroups)的作用

容器化技术的隔离机制是靠namespaces实现,而容器化的资源分配靠的是在内核级通过CGroups机制实现,它会把系统级的资源分成多个组,然后把每一个组内的资源量指派分配到特定的namespace的进程上去来实现

2.2.1、CGroups的功能

blkio 块设备IO

cpu CPU

cpuacct CPU资源使用报告

cpuset 多处理器平台上的CPU集合,有两种分派方式,一种是比例,一种是分核数

devices 设备访问

freezer

挂起或恢复任务

memory 内存用量及报告

perf_event 对cgroup中的任务进行统一性能测试

net_cls cgroup中的任务创建的数据报文的类老丛别标识符

2.3、LXC(Linux Container)

LXC是最早除了Vserver之外,真正把完整的容器技术用一组简易使用的工具和模板来极大的简化了容器技术使用的一个方案。LXC靠一组工具包帮我们快速的实现了创建名称空间,利用模板完成内部所需要的各种文件的安装。同时,还有些工具能够自动完成chroot切换,于是,就可以使用多个并行的用户空间,而每一个用户空间,就像我们之前使用的虚拟机,是一个独立的系统。

三、Docker的诞生

LXC虽然极大的简化了容器技术的使用,但比起过去使用虚拟机来讲,它的复杂程度是没有多大降低的,隔离性也没宏弊有虚拟机好、在大规模使用上和分发上都不方便。但好处是它能够让每一个用户空间的进程直接使用宿主机的性能,中间没有额外开销。于是就出现了Docker

3.1、Docker是LXC的增强版,它本身不是容器,而是容器的易用工具。容器是linux内核中的技术,Docker只是把这种技术在使用上简易普及了。Docker在早期的版本其核心就是LXC的二次封装发行版。Docker利用LXC做容器管理引擎,但是在创建容器时,不在使用模板去安装生成。而是通过镜像技术(把一个 *** 作系统用户空间所需要使用到的组件事先编排好,并整体打包成一个文件,image文件),镜像文件集中放在一个仓库中。当需要创建容器时,Docker调用LXC的工具lxc-create。但是不在通过lxc的模板去安装,而是连接到镜像服务器蔽含族上下载匹配的镜像文件,而后基于镜像启动容器。所以,Docker极大的简化了容器的使用难度。以后我们创建启动容器,只需要一个命令,docker-run,docker-stop就可以启动停止一个容器了。为了使整个容器使用更加易于管理,Docker采用了一种更精巧的限制机制,在一个容器内,只运行一个进程。而LXC是把一个容器当一个用户空间使用,可以运行N个进程,所以使得我们管理容器进程极为不便。Docker在镜像构建底层使用了分层构建,联合挂载。这种好处就是在以后的镜像分发上就没有那么庞大。可以自由组合镜像实现不同环境的挂载

2.3、Docker容器引擎的更迭

Docker早起是基于LXC容器管理引擎实现,当后来成熟之后,Docker自建了一个容器引擎叫libcontainer,后来CNCF的介入,Docker又研发了一个工业化标准的容器引擎,叫runC,目前所使用的新版Docker,所使用的容器引擎就是RunC。

在虚拟化环境下,物理服务器的CPU、内存、硬盘和网卡等硬件资源被虚拟化并受Hypervisor的调度,多个 *** 作系统在Hypervisor的协调下可以共享这些虚拟化后的硬件资源,同时每个 *** 作系统又可以保存彼此的独立性。

根据Hypervisor所处层次的不同和Guest OS对硬件资源的不同使用方式,Hypervisor虚拟化被分为两种类型:裸金属架构(“裸机”虚拟化)和寄居架构(基于 *** 作系统的虚拟化,宿主型虚拟化)。

Hypervisor虚拟化层安装在传统的 *** 作系统中,虚拟化软件以应用程序进程形式运行在Windows和Linux等主机 *** 作系统中。典型的宿主型Hypervisor有VMware Workstation和VirtualBox。在Hypervisor虚拟化环境下,部署在物理服务器上的系统称为Host OS,而部署在Hypervisor上的虚拟机 *** 作系统称为Guest OS。

Hypervisor的安装:在物理服务器上安装Linux *** 作系统然后在 *** 作系统上安装Hypervisor,然后部署虚拟机(Guest OS)后通过Hypervisor来共享资源。

寄居架构如下图:

宿主 *** 作系统自身上运行这一些应用程序,然亏慧后还有虚拟机程序,这就是我们之前认识的传统虚拟机。

Hypervisor虚拟化层,在虚销搏答拟化环境中无须完整的Host OS,直接将Hypervisor部署在裸机上,并将裸机服务器的硬件资源虚拟化,也可以将Hypervisor理解为仅对银基硬件资源进行虚拟和调度的薄 *** 作系统,其并不提供常规Host OS的功能。常见的裸金属架构有IBM的PowerVM、VMware的ESX Sevrer、Citrix的XenServer、Microsoft的Hyper-V以及开源的KVM等虚拟化软件。

裸金属架构虚拟化图如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12360176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存