Riddler助力Docker容器为runC运行环境做准备

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是Riddler助力Docker容器为runC运行环境做准备【编者的话】本文主要是介绍Riddler工具,讲解Riddler为开发者带来的便利,并对基本使用进行了介绍和解释。
本文讲的是Riddler助力Docker容器为runC运行环境做准备【编者的话】本文主要是介绍Riddler工具,讲解Riddler为开发者带来的便利,并对基本使用进行了介绍和解释。

这是一个关于标准化带来的优势的故事,同时介绍如何利用 Riddler 转换一个Docker容器为runC镜像。Riddler由容器开发者 Jess Frazelle 研发。
e1.jpg

Phil Estes  是IBM开放云技术的高级技术经理,他将在本周多伦多的 LinuxCon 会议上介绍Riddler的性能。

运行,运行,运行!

回顾开放容器,runC是一个开源引擎和规范运行容器,它遵守 OCI的规范 ,包括Docker在内。 runC 的思想配合远景规划,是为任何供应商控制或云栈提供一个免费开源容器。它是基于Docker的LibContainer,作为与操作系统交互的接口。它是Docker公司自己的核心容器引擎。

runC可以运行Docker的镜像。它依赖两个组成部分。一个是一组配置指令。这些命令行标志通常追加在Docker运行命令后面;而runC从 config.json 配置文件中读取配置信息。可以手工创建一个,或者runC将自动创建一个。

RunC还需要根文件系统,使它可以操作容器。用户可以手动创建一个目录,作为容器的根文件系统或者文件系统可以利用 docker export 命令从容器中导出。

埃斯蒂斯说:"通过上述两块内容,runC可以执行一个容器。”

为什么呢?

很多场景下,操作runC可能是比操作全功能的容器(如Docker)更合适,埃斯蒂斯解释说。

它可以提供容器移植到新环境的基础——比如 Solaris Zones ,或者用于创建新OCI引擎或平台兼容的容器。例如,英特尔的 Clear Containers Hyper.sh 均是基于runC实现。

RunC在尝试新功能,如检查点恢复。Docker的 seccomp 是在Docker1.10中引入的。

Estes说:“RunC就是那种可以在高层开发这种能力的工具。”

开发者同样可以发现runC的便利,它提供一个简洁明了的接口便于快速迭代文件系统和配置中的变更。于是,他还说“我从不担心存储或者后端问题。”

进入Riddler

e2.jpg

虽然runC可以创建容器配置(“ runc spec > config.json ”),但是该文件只有基本配置,通常需要再加入各种环境变量。如何让Docker自动获取这些信息呢?

Riddler让用户可以仅通过运行一个容器就可以为容器创建一个全信息配置文件,同时让Riddler从Docker引擎中画出必要的细节内容。Ridder准确的创建出刚运行的容器的配置文件。Estes介绍说:“是否有挂载的卷、是否采用只读文件系统、是否采用了命名空间,这些信息均会被复制到runC的配置文件中”。

Riddler同样会增加一些默认配置。例如,seccomp配置是根据Docker的多种假设,例如不允许系统调用。它同样获取docker run命令附加的参数。在Estes的例子中,他运行了 date 命令来演示这些参数也会被复制。

其他特性必须手工设定。网络并不是OCI管理,于是这些设定必须手工输入。Riddler提供hook到netns,它使得用户可以调整网络配置。用户还需要为容器创建文件系统。对于这部分,Estes创建了一个脚本用于匹配Riddler获取的用户网络命名空间信息。

在这些步骤之后,“我们拥有了一个非常类似简单Docker运行的环境。”

点击观看视频

解释

作为如何使用该工具的例子,Estes描述了如何用 NGINX 复制一个新运行的容器。他采用 -d 标志来启动软件到后台模式。他还运行了一个容器启动Lynx文本浏览器。

在这个场景下,对开发者来说runC可以简化很多事情。开发者可以容易的修改运行中容器的配置。容器可以访问开发者目录中的其他文件夹。

Estes说:“在开发模式,简便在工作中非常有用”

runC同样提供了与 Linux Capabilities 相互协作,它有一系列的系统调用或者资源操作与超级管理员权限。例如Docker,它有一系列的Linux Capabilities设置。通过这些配置,runC提供一系列的设定,便于开发者修改。

例如, CAP_NET_RAW 设定控制用户执行低级别TCP函数的能力,包括使用 ping 命令执行Internet Control Message Protocol (ICMP)。快速演示表明,开始时ping确实可以工作,之后Estes做出了改变,它就不再工作了。同样, CAP_SYS_ADMIN 可以修改为允许或者不允许用户读取和配置宿主机名等功能。

原文链接:Ready Docker Containers for a RunC Runtime with Riddler(翻译:陈杰)

===================================================
译者介绍

陈杰,BOSS直聘app的数据工程师,工作重心为基于用户行为的数据推荐,平时也乐于去实现一些突发的想法。在疲于配置系统环境时发现了Docker,跟大家一起学习、使用和研究Docker。

原文发布时间为:2016-11-09

本文作者:陈杰

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Riddler助力Docker容器为runC运行环境做准备

相关文章
|
24天前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
80 16
|
1月前
|
存储 虚拟化 Docker
|
1月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
1月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
130 30
|
1月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
2月前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
509 15
|
2月前
|
存储 Kubernetes C++
Docker、containerd、CRI-O 和 runc 之间的区别
通过理解这些组件的角色和功能,可以更好地选择和配置容器环境,以满足特定的需求和应用场景。
105 25
|
3月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
279 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
3月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
774 11
|
4月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
122 8
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈