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

  这篇文章由www.mingpaixinxi.com名牌信息网转载:这是一个关于标准化带来的优势的故事,同时介绍如何利用Riddler转换一个Docker容器为runC镜像。Riddler由容器开发者Jess Frazelle研发。

  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

  虽然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运行的环境。”

  点击观看视频。

  (视频时长5:25,建议在wifi环境下观看)

  解释

  作为如何使用该工具的例子,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可以修改为允许或者不允许用户读取和配置宿主机名等功能。

时间: 2024-12-30 03:25:54

Riddler助力Docker容器为runC运行环境做准备的相关文章

使用Docker搭建Java Web运行环境

这周末体验了一下挺火的Docker技术,简单记录自己的学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发,源代码托管在 Github 上, 遵从Apache2.0协议开源.Docker的目标是实现轻量级的操作系统虚拟化解决方案. 学习Docker首先要了解几个概念: 镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息: 容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在

使用 Docker 搭建 Java Web 运行环境

Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了.作为一名 Java 程序员,我们是时候一起把 Docker 学起来了! 本文会对虚拟化技术与 Docker 容器技术做一个对比,然后引出一些 Docker 的名词术语,比如:容器.镜像等,随后将使用 Docker 搭建一个 Java Web 运行环境,最

转:使用 Docker 搭建 Java Web 运行环境

原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了.作为一名 Java 程序员,我们是时候一起把 Docker 学起来了! 本文会对虚拟化技术与 Docker 容器技术做一个对比,然后

使用 Docker 搭建 Java Web 运行环境(转)

原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了.作为一名 Java 程序员,我们是时候一起把 Docker 学起来了! 本文会对虚拟化技术与 Docker 容器技术做一个对比,然后引出一些 Docker 的名词术语,比如:容

centos7安装docker并配置php运行环境

原文:centos7安装docker并配置php运行环境 一.安装docker 首先我们先来了解一下什么是docker. docker是一个虚拟化的技术,基于 Linux 内核,是将进程进行封装隔离,由于隔离的进程独立于宿主机和其它的隔离的进程,因此也可以称为容器.很多人把docker理解为虚拟机,其实不是的,因为它不需要进行硬件虚拟以及运行完整操作系统等额外开销的,docker的出现也是为了解决在各种复杂的环境下不需要做任何的修改还可以保证程序正常稳定的运行,也就是环境一致性的问题,当然还有k

OSChina 技术周刊第二十期 —— 使用 Docker 搭建 Java Web 运行环境

每周技术抢先看,总有你想要的! 移动开发 [软件]移动端web框架 Frozen UI [博客]Android各种Adapter的用法 服务端开发/管理 [翻译]2014 Docker 的竞争随即而来 [翻译]Docker 和 PID 1 僵尸进程问题 [软件]Node.js 串口读写包 node-serialport [软件]Nginx 模块 Nginx-Clojure [博客][Web安全之实战] 跨站脚本攻击XSS [博客]Tiny框架应用实践之Tiny社区 [博客]Laravel大型项目

将maven项目打包在docker容器中的运行过程

maven项目打包在docker容器中的运行过程 第一步:将springboot项目打包成jar包 第二步:将jar拷贝到虚拟机中,利用xftp工具将jar包拷贝到虚拟机中 第三步:docker pull java拉取java镜像 第四步:编写dockerfile文件 第五步:构建镜像 第六步:基于镜像运行容器 原文地址:https://www.cnblogs.com/jasonboren/p/12272347.html

详解使用Docker搭建Java Web运行环境

>Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源.Docker的目标是实现轻量级的操作系统虚拟化解决方案. 学习Docker首先要了解几个概念: 镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息: 容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在“Docker”上: 仓库—仓库是存放

Docker搭建Java Web运行环境

1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序. 启动命令:(docker run <相关参数> <镜像 ID> <初始命令>) docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a