【译文】Docker+Wasm技术预览

简介: 【译文】Docker+Wasm技术预览
原文: Introducing the Docker+Wasm Technical Preview

2022年10月24日Docker发布了WASM相关的技术预览,目前仍处于Bata阶段。我看到甚至Docker官网的Logo都加上Wasm了,可以说Docker官方很重视这项实验性特性。

image.png
Docker+Wasm的技术预览现已发布!Wasm最近引起了很多关注,这一特性将使您更容易快速构建针对Wasm运行时的应用程序。

作为此次发布的一部分,我们也很高兴地宣布Docker将作为投票成员加入Bytecode AllianceBytecode Alliance是一个非营利组织,致力于创建安全的新软件基础,以WebAssembly和WebAssemply系统接口(WASI)等标准为基础。

image.png

什么是Wasm

WebAssembly(通常简称为Wasm)是一种相对较新的技术,它允许您编译用40多种语言(包括Rust、C、C++、JavaScript和Golang)编写的应用程序代码,并在沙盒环境中运行。

最初的例子侧重于在web浏览器(如FigmaAutoCADPhotoshop)中运行本机代码。事实上,当将基于网络的DNA序列质量分析仪转换为Wasm时,fastq.bio的速度提高了20倍)。迪士尼在Wasm之上构建了他们的Disney+ Application Development Kit!浏览器的好处是显而易见的。

但是多亏了WebAssembly系统接口(WASI), Wasm正在迅速扩展到浏览器之外。VercelFastlyShopifyCloudflare等公司都支持使用Wasm在边缘运行代码,Fermyon正在构建一个平台,在云中运行Wasm微服务。

Why Docker?

在Docker,我们的目标是帮助开发人员通过克服应用程序开发的复杂性来实现他们的想法。我们努力使构建、共享和运行应用程序变得容易,而不管底层技术是什么。通过使容器对所有人都可访问,我们证明了我们使开发人员的生活更容易的能力,并被公认为最受欢迎的开发人员工具

我们认为Wasm是Linux容器的一种补充技术,开发人员可以根据用例选择使用哪种技术(或者两者都使用!)随着社区探索使用Wasm的可能性,我们希望利用您所了解和喜爱的经验和工具,帮助开发、构建和运行Wasm应用程序更容易。

如何获得技术预览?

准备好亲自尝试了吗?太棒了!但在你开始探索之前,有几点需要记住:

  • 重要提示#1:这是Docker Desktop的技术预览版本,事情可能不会像预期的那样工作。在继续之前,请确保备份您的容器和镜像。
  • 重要提示#2:此预览启用了包含的容器镜像存储不能被禁用。如果您当前没有使用容器镜像存储,则将无法访问预先存在的镜像和容器。

你可以在这里下载Docker Desktop的技术预览版本:

有什么已知的限制吗?

是的!这是一个早期的技术预览,我们仍在努力使体验尽可能流畅。但有几件事你应该注意:

  1. 当中断时,Docker Compose可能无法干净地退出

    • 解决方法:通过发送SIGKILL (killall -9 docker-compose)来清理docker-compose进程。
  2. 推送到集线器可能会给出一个错误server message: insufficient_scope: authorization failed,即使在使用Docker Desktop登录后
  • 解决方法:在命令行中执行docker login命令

OK,那么Wasm集成实际上是如何工作的呢?

我们很高兴你这么问!首先,我们需要提醒您,由于这是一个技术预览,事情可能会迅速变化。但它目前是这样运作的。

  1. 我们正在利用我们最近的工作将镜像管理迁移到容器,因为它提供了使用与兼容OCI-compatible和containerd shims的能力。
  2. 我们与WasmEdge合作,创造了一个containerd shim。这个shim从OCI-compatible中提取Wasm模块,并使用WasmEdge运行时运行它。
  3. 我们添加了对声明Wasm运行时的支持,这将支持使用这个新的shim。

image.png

让我们看一个例子!

在安装预览之后,我们可以运行以下命令来启动一个Wasm应用程序示例:

docker run -dp 8080:8080 --name=wasm-example --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm32 michaelirwin244/wasm-example

由于有些参数可能不熟悉,让我们解释一下它们的作用:

  • --runtime=io.containerd.wasmedge.v1 这通知Docker引擎我们想要使用Wasm containerd shim,而不是标准的Linux容器运行时
  • --platform=wasi/wasm32 指定我们想要使用的镜像的体系结构。通过利用Wasm体系结构,我们不需要为不同的体系结构构建单独的镜像。Wasm运行时将完成将Wasm二进制代码转换为机器指令的最后一步。

在提取图像之后,运行时读取图像的ENTRYPOINT以定位和提取Wasm模块。然后将模块加载到Wasm运行时中,启动并配置网络。现在,我们的机器上运行了一个Wasm应用程序!

这个特殊的应用程序是一个简单的web服务器,它说“Hello world!”并将数据反馈给我们。为了验证它是否工作,让我们首先查看日志。

docker logs wasm-example
Server is now running

我们可以通过打开http://localhost:8080或使用curl来获得“Hello world”消息。

curl localhost:8080

我们的响应会给我们一个Hello world信息:

Hello world from Rust running with Wasm! Send POST data to /echo to have it echoed back to you

为了将数据发送到echo端点,我们可以使用curl:

curl localhost:8080/echo -d '{"message":"Hi there"}' -H "Content-type: application/json"

我们将看到返回的数据响应:

{"message":"Hi there"}

要删除应用程序,你可以像删除任何其他Docker服务一样删除它:

docker rm -f wasm-example

新的集成意味着您可以在您的Linux容器运行Wasm应用程序(甚至与Compose一起)。要了解更多,请查看文档!

Wasm和Docker的下一步计划?

又一个好问题!Wasm正在迅速发展和发展,包括探索如何支持多线程垃圾回收等等。还有许多仍然需要解决的挑战,包括缩短开发人员反馈循环和可能的生产路径。

所以你可以自己尝试一下,然后让我们知道你对the public roadmap的想法或反馈。我们很乐意收到你的来信!

相关文章
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
837 108
|
2月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
381 2
|
4月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
4月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
9月前
|
存储 虚拟化 Docker
|
9月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
9月前
|
安全 API 算法框架/工具
大模型文件Docker镜像化部署技术详解
大模型文件Docker镜像化部署技术详解
1361 2
|
10月前
|
消息中间件 Linux 数据中心
Docker核心技术:Docker原理之Namespace
通过以上内容,您可以深入了解Docker中的Namespace机制及其在资源隔离中的应用,从而更好地理解和应用Docker技术。
383 25
|
9月前
|
安全 开发者 Docker
Docker技术背景与应用:解决现代开发中的关键问题
Docker作为一种革命性的容器化技术,极大地改变了现代软件开发的方式。通过解决环境一致性、依赖管理、部署复杂性和资源利用率等问题,Docker为开发者提供了高效、灵活的开发和部署环境。尽管面临着一些挑战,但随着技术的发展和完善,Docker将继续在现代软件开发中发挥重要作用。作为全栈工程师,掌握并善用Docker技术,将为我们的开发工作带来更多便利和可能性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
12月前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
371 5

热门文章

最新文章