访谈 | Docker公司首席布道师谈容器和下一代虚拟化

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是访谈 | Docker公司首席布道师谈容器和下一代虚拟化,【编者的话】本文为LinuxCon讲师采访的一部分,Docker公司的Jerome分享了Docker与其它容器技术的区别、Docker容器的存储和数据迁移、Docker在企业中的应用等话题。
本文讲的是访谈 | Docker公司首席布道师谈容器和下一代虚拟化 【编者的话】本文为LinuxCon讲师采访的一部分,Docker公司的Jerome分享了Docker与其它容器技术的区别、Docker容器的存储和数据迁移、Docker在企业中的应用等话题。

Jerome 是Docker公司的首席布道师,也是老员工。对社区运营和容器非常了解。本文根据对他的采访整理而成。

在这次的访谈中,Jerome深入分析了Docker并解释了如何管理Docker容器的存储,以及如何随着Docker容器迁移数据。

什么是容器?有哪些现有的容器技术?Docker与其它容器技术的不同是什么?

从宏观角度来看,容器更像是轻量化的虚拟机。你可以在容器中安装任何你想要的软件,容器相对独立且不会影响其它容器或者宿主环境。每一个容器有它自己的网络堆栈、进程空间、文件系统等。同时,他们的成本要远小于虚拟机:容器启动更快、占用更少的内存和硬盘空间。从底层角度来看,这都是因为容器只是宿主机上的一个进程,利用内核特征如命名空间和组管理来提供这种隔离。启动一个容器只是启动了一个普通的UNIX进程;创建一个容器只是复制了一个copy-on-wirte文件系统的镜像。


Docker与其它容器技术不同,因为它不只是一个容器引擎。Docker是一个平台,整合了Docker引擎、Docker Hub以及一系列的生态工具,如Docker Compose、Docker Machine、Docker Swarm等。这些都采用开发API。
Docker与其它Hypervisor虚拟技术的不同之处?

有人说Docker是一个“容器的hypervisor”,但是许多人并不这么认为,这是因为hypervisor通常是管理虚拟机,而Docker是管理容器。在底层技术细节也是不同的。当hypervisor启动虚拟机时,它会创建虚拟硬件,并利用特定CPU基础结构和特性,如VT-x、AMD-x或者权限层级。当Docker创建一个容器,它利用的是内核的特性,如命名空间、群组管理,而不依赖硬件特性。


这意味着容器在某种意义上说更具有可移植性,因为它们可以同时在物理机或者虚拟机上运行;但是他们从另外某种意义上来说,也更不容易移植,因为容器必须使用宿主的内核。这意味着,你不能运行一个Windows容器在Linux内核上(除非Linux内核可以执行Windows二进制程序)。
对管理Docker容器的存储有什么建议?如何将Docker容器和数据关联?

Docker有个“卷”的概念,使得宿主机和容器间可以共享目录。卷从概念上与虚拟机的“共享文件夹”有点类似,只是他们不需要在容器上做任何配置,并且它们是零开销的,因为他们采用的是绑定挂载实现。


当你的数据在硬盘(可以是一个具体的硬盘、RAID、其他挂载网络上的设备或者其他的任何设备)上,挂载到容器主机上的最简便的方法就是通过“卷”机制来暴露给容器。


Docker同样有插件机制,支持容器为其它容器提供存储。这意味着我们可以在容器中搭建Ceph、Gluster或者其它存储集群,然后将块设备和挂载点暴露给其它容器。
当Docker容器在别的机器上启动时,如何使得数据随着容器移动?

就像在容器技术之前我们做的一样:网络存储、分布式文件系统、数据传输或者同步(利用rsync、unison等)。当使用容器时,有两个优势。首先,容器不会影响用户存取数据的方式。例如,如果从DRBD迁移到Ceph,容器并不需要知道这个细节;事实上,同一个容器在本地存储或者分布式存储上运行是一样的。另一个优势来自于那些新的存储插件。如果我们可以将应用容器和存储容器分开,那这些插件可以让用户获取数据更容易。
如何确保对正在运行的容器的修改,其可以被更新回基础的容器镜像?

Docker提供了相关的API来对比容器和它的基础镜像,同时也可以根据现有的容器来创建新的镜像。API对应的命令是 docker diffdocker commit
Docker容器如何帮助构建高可用的解决方案?

构建一个高可用的系统需要做很多的事情,Docker让这一切变得无比简单。例如,确保部署时相关机器上软件版本的一致性。Docker不会自动的解决问题,但是它可以让事情变得更加简单、快捷和可信,就像一个包管理器通常比从源代码编译更可靠。
如何看待在企业客户生产环境中Docker适配性的变化?
通常来看,Docker一开始只是做为一个开发工具来保证用户有一个一致、可复制的开发环境,类似Hashicorp的Vagrant。紧接着会被用到CI/CD中,来减少测试次数。总之,整体来看它目前可适用于生产环境的前一个阶段,但是当用户已经积累了足够的经验和自信来运行Docker时,它就可以服务生产环境了。
原文链接:Docker containers and the next generation of virtualization (翻译:陈杰)

===============================================
译者介绍
陈杰 ,北京理工大学计算机学院在读博士,研究方向是自然语言处理在企业网络信誉评价方面的应用,平时也乐于去实现一些突发的想法。在疲于配置系统环境时发现了Docker,跟大家一起学习、使用和研究Docker。

原文发布时间为:2015-08-16 
本文作者:Sonyfe25cp 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:访谈 | Docker公司首席布道师谈容器和下一代虚拟化
目录
相关文章
|
3天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
118 77
|
11天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
4天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
29 3
|
11天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
41 7
|
11天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
23 5
|
11天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
31 3
|
11天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
32 4
|
11天前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
21 2
|
11天前
|
存储 安全 数据中心
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
28 1
|
13天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
30 1