写点什么

Docker 发布首个 WebAssembly 支持工具预览版

  • 2022-11-08
    北京
  • 本文字数:1026 字

    阅读完需:约 3 分钟

Docker 发布首个 WebAssembly 支持工具预览版

在 KubeCon NA 2022 大会的云原生Wasm活动日中,Docker 宣布与 CNCF Wasm 运行时项目WasmEdge合作推出Docker+Wasm技术预览。只需一个命令docker compose up,Docker 开发人员就可以立即构建、分享和运行一个完整的 Wasm 应用程序。

 

Wasm 最初是作为 Web 浏览器的安全沙盒开发的。近年来,作为 VM 和 Linux 容器(LXC)的一个安全、轻量级、快速、可移植的替代方案,它在服务器端找到了许多应用场景——这一领域最初是由 Docker 开创的。

 

Second State 提供了一个标准的Docker+Wasm演示应用程序。这是一个数据库驱动的 Web 应用程序,它包含一个用于运行整个 Web 服务(微服务)的 WasmEdge“容器”,以及两个用于运行支持服务的 Linux 容器(一个用于 MySQL 数据库,一个用于为前端 UI 提供静态 HTML 页面的 NGINX)。这三个容器在同一个网络中并行运行,共同组成一个应用程序。微服务用 Rust 编写,并编译成 Wasm。它有一个高性能(非阻塞)的 HTTP 服务器、一个事件处理程序(处理 HTTP 请求的业务逻辑)和一个 MySQL 数据库客户端。整个“容器化”的微服务只有 3MB,而相比之下,数据库和 NGINX 的 Linux 容器则有数百 MB。



图片来源:Docker+Wasm技术预览简介

 

Docker Compose不仅能将 Wasm 应用程序和容器一样运行,还会将 Rust 源代码构建为 Wasm。开发人员甚至不需要安装 Rust 编译器工具链,因为 Docker 也已将整个构建环境容器化。Docker + Wasm 是一个单独的工具,负责构建和运行 Wasm 应用程序。

 

随着 Docker 发起了容器革命(导致了云原生时代的到来),Docker在“多运行时”世界中支持 Wasm 的努力变得特别有意义。


Docker+Wasm 的发布非常有意义。我们不再生活在单运行时的世界中,我们有 Linux 容器、Windows 容器和 Wasm 容器。OCI 可以打包它们,@docker 可以构建和运行它们。—— Docker 联合创始人Solomon Hykes


Docker+Wasm 背后的技术主要来自开源社区。例如,Docker 依赖一个名为runwasi的 Containerd shim(最初由微软的DeisLabs创建)来启动 WasmEdge 并执行 Wasm 程序。

 

开源工作已远远超出了 Docker。例如,Red Hat 团队已经将Wasm运行时支持集成到OCI运行时crrun中。这使得整个Kubernetes栈能够完美支持WasmEdge应用。事实上,在 KubeCon 活动的前几天,Liquid Reply 团队已经演示了使用 WasmEdge 的Podman+Wasm

 

KubeCon 活动上还演示了其他 Wasm 应用,包括:AI推理应用、基于Dapr的微服务流式管道中的数据处理功能。现在,开发人员可以使用 Docker+Wasm 轻松地构建、分享和运行这些应用程序了。

 

原文链接:

https://www.infoq.com/news/2022/11/docker-webassembly/

2022-11-08 08:005591

评论

发布
暂无评论
发现更多内容

【Python技能树共建】文件模块

梦想橡皮擦

Python 6月月更

细数攻防演练中十大关键防守点

穿过生命散发芬芳

6月月更 攻防演练

【建议收藏】通俗易懂图解网络知识-第一篇

利志分享

应用最广泛的动态路由协议:OSPF

wljslmz

OSPF 动态路由 6月月更

linux环境下实现银行间算法

乌龟哥哥

6月月更

MySql索引

工程师日月

6月月更

数据库每日一题---第10天:组合两个表

知心宝贝

前端 后端 6月月更

设计消息队列存储消息数据的 MySQL 表格

踩着太阳看日出

架构训练营

M_8:设计消息队列存储消息数据的 MySQL 表格

Jadedev

架构训练营

接口测试工具apipost3.0版本对于流程测试和引用参数变量

Xd

Java 后端 apipost 接口测试工具

InfoQ 极客传媒 15 周年庆征文|简述构建微服务架构的四大挑战

阿泽🧸

微服务 6月月更 InfoQ极客传媒15周年庆

设计消息队列存储信息数据的MySQL表结构

dan629xy

Teambition 协作应用心得分享|社区征文

北洋

初夏征文

模块八:设计消息队列存储消息数据的MySQL表

jiaoxn

「架构实战营」

【Java Web系列】Cookie工作流程及基本使用

倔强的牛角

Java javaWeb Cookie 6月月更

测试基础之:单元测试

甜甜的白桃

单元测试 测试用例 6月月更

前端之uni-app研究学习day_1

恒山其若陋兮

6月月更

【愚公系列】2022年06月 面向对象设计原则(七)-迪米特法则

愚公搬代码

6月月更

flutter系列之:flutter中常用的GridView layout详解

程序那些事

flutter 程序那些事 6月月更

spring4.1.8扩展实战之二:Aware接口揭秘

程序员欣宸

Java spring Spring Framework 6月月更

深入剖析 | 应用层Protocol的标准设计

九叔(高翔龙)

架构 协议 TCP/IP dubbo源码 粘包/拆包

selenium操作元素遇到的异常

红毛丹

selenium 6月月更

动态规划之如何将问题抽象转化为0-1背包问题(详解利用动态规划求方案数)

未见花闻

6月月更

数组

Jason199

数组 js 数组操作 6月月更

FFmpeg原理

Loken

ffmpeg 音视频课程

『Three.js』场景 Scene

德育处主任

canvas three.js 6月月更

设计消息队列存储消息数据的 MySQL 表格

大眼喵

「架构实战营」

ConcurrentHashMap 源码分析-初始化

zarmnosaj

6月月更

Flutter库推荐Sizer 可帮助您轻松创建响应式 UI

坚果

6月月更

iShot

IT蜗壳-Tango

6月日更 6月月更

在 Golang 中构建 CRUD 应用程序

宇宙之一粟

6月月更

Docker 发布首个 WebAssembly 支持工具预览版_容器_Vivian Hu_InfoQ精选文章