Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…n_r1392604553

Signed-off-by: ezirmusitua <[email protected]>
  • Loading branch information
ezirmusitua committed Nov 15, 2023
1 parent 929d1e3 commit 82f8320
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"position": 5,
"link": {
"type": "generated-index",
"description": "在这一章节中,我们将讨论 WasmEdge CLIs(命令行界面)以及如何利用 Docker 和 WASM 来构建、分享和运行您的 WASM 应用程序。"
"description": "在这一章节中,我们将讨论 WasmEdge CLIs(命令行界面)以及如何利用 Docker 和 WASM 来构建、分享和运行你的 WASM 应用程序。"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_position: 1

# `wasmedge` 命令行工具

在安装了 WasmEdge 后,你可以使用 `wasmedge` 来执行 WASM 文件。我们将介绍如何在您的机器和 Docker 镜像上使用 WasmEdge 运行 WASM 文件。
在安装了 WasmEdge 后,你可以使用 `wasmedge` 来执行 WASM 文件。我们将介绍如何在你的机器和 Docker 镜像上使用 WasmEdge 运行 WASM 文件。

`wasmedge` 二进制文件是一个命令行界面(CLI)程序,用于运行 WebAssembly 程序。

Expand Down Expand Up @@ -186,7 +186,7 @@ Hello WasmEdge!

### 调用从 Rust 编译的 WebAssembly 函数

[add](https://github.com/second-state/wasm-learning/tree/master/cli/add) 程序是用 Rust 编写的,包含一个导出的 `add()` 函数。你可以将其编译为 WebAssembly,并使用 `wasmedge` 调用 `add()` 函数。在这个示例中,您将看到如何从 CLI 进行此操作。通常在将 WasmEdge 嵌入到另一个主机应用程序中时,需要从主机调用 WASM 函数。
[add](https://github.com/second-state/wasm-learning/tree/master/cli/add) 程序是用 Rust 编写的,包含一个导出的 `add()` 函数。你可以将其编译为 WebAssembly,并使用 `wasmedge` 调用 `add()` 函数。在这个示例中,你将看到如何从 CLI 进行此操作。通常在将 WasmEdge 嵌入到另一个主机应用程序中时,需要从主机调用 WASM 函数。

你需要安装 [Rust 编译器](https://github.com/second-state/rust-examples/blob/main/README.md#prerequisites),然后使用以下命令从 Rust 源代码构建 WASM 字节码文件。

Expand Down Expand Up @@ -255,7 +255,7 @@ wasmedge --dir .:. wasmedge_quickjs.wasm hello.js 1 2 3
Hello 1 2 3
```

[qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm) 是一个被贬意为 WebAssembly 的包含 [WasmEdge Tensorflow 扩展](https://www.secondstate.io/articles/wasi-tensorflow/) 的 JavaScript 解释器。要运行 [qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm),你必须使用 `wasmedge-tensorflow-lite` CLI 工具,这是一个内置了 Tensorflow-Lite 扩展的 WasmEdge 构建版本。您可以下载一个完整的[基于 Tensorflow 的 JavaScript 示例](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/tensorflow_lite_demo) 进行图像分类。
[qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm) 是一个被贬意为 WebAssembly 的包含 [WasmEdge Tensorflow 扩展](https://www.secondstate.io/articles/wasi-tensorflow/) 的 JavaScript 解释器。要运行 [qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm),你必须使用 `wasmedge-tensorflow-lite` CLI 工具,这是一个内置了 Tensorflow-Lite 扩展的 WasmEdge 构建版本。你可以下载一个完整的[基于 Tensorflow 的 JavaScript 示例](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/tensorflow_lite_demo) 进行图像分类。

```bash
# Download the Tensorflow example
Expand All @@ -271,7 +271,7 @@ confidence: 0.8941176470588236

## CLI 工具的 Docker 镜像

本节中的 Docker 镜像主要用于开发目的。它允许你在容器化的 Linux 环境中使用 WasmEdge 工具。如果您想要将 WASM 应用程序放入容器中,请查看[此处](../getting-started/quick_start_docker.md)的内容。
本节中的 Docker 镜像主要用于开发目的。它允许你在容器化的 Linux 环境中使用 WasmEdge 工具。如果你想要容器化 WASM 应用程序,请查看[此处](../getting-started/quick_start_docker.md)的内容。

`wasmedge/slim:{version}` Docker 镜像提供了使用 [DockerSlim](https://dockersl.im) 构建的精简 WasmEdge 镜像,每次发布都会更新。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_position: 4

Docker Desktop 分发了内置的 WasmEdge 运行时。这使开发人员可以通过 Docker 工具构建、分享和运行非常轻量的容器(即,只包含 `.wasm` 文件的 `scratch` 空容器,没有任何 Linux 操作系统库或文件)。这些“WASM 容器”完全符合 OCI 标准,因此可以由 Docker Hub 进行管理。它们是跨平台的,可以在 Docker 支持的任何操作系统/CPU 上运行(操作系统和 CPU 平台为 `wasi/wasm`)。但更重要的是,相较于 Linux 容器,它们的体积是其十分之一,因为 WASM 容器不需要捆绑和启动 Linux 库和服务,所以启动时间也是十分之一。

结合 Docker 能够将开发环境和部署环境容器化的能力,你可以创建和部署复杂的应用程序,而无需安装任何依赖。例如,您可以在本地开发机器上设置完整的 Rust 和 WasmEdge 开发环境,而无需安装任何工具。您还可以部署一个复杂的 WasmEdge 应用,该应用需要连接到 MySQL 数据库,而无需在本地安装 MySQL。
结合 Docker 能够将开发环境和部署环境容器化的能力,你可以创建和部署复杂的应用程序,而无需安装任何依赖。例如,你可以在本地开发机器上设置完整的 Rust 和 WasmEdge 开发环境,而无需安装任何工具。你还可以部署一个复杂的 WasmEdge 应用,该应用需要连接到 MySQL 数据库,而无需在本地安装 MySQL。

在本指南中,我们将介绍如何:

Expand Down Expand Up @@ -77,7 +77,7 @@ docker push secondstate/rust-example-hello

### 运行 Rust 示例

你可以使用常规的 Docker 的 `run` 命令来运行 WASM 容器应用程序。请注意,您确实需要指定 `runtime``platform` 标志,告知 Docker 这是一个非 Linux 容器,并且需要 WasmEdge 来运行它。
你可以使用常规的 Docker 的 `run` 命令来运行 WASM 容器应用程序。请注意,你确实需要指定 `runtime``platform` 标志,告知 Docker 这是一个非 Linux 容器,并且需要 WasmEdge 来运行它。

```bash
$ docker run --rm --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm secondstate/rust-example-hello:latest
Expand Down Expand Up @@ -152,7 +152,7 @@ docker push secondstate/node-example-hello

### 运行和测试 Node.js 示例

你可以使用常规的 Docker 的 `run` 命令来运行 WASM 容器应用程序。请注意,您确实需要指定 `runtime``platform` 标志,告知 Docker 这是一个非 Linux 容器,并且需要 WasmEdge 来运行它。由于这是一个 HTTP 服务器应用,还需要将容器的端口 8080 映射到主机,以便您可以从主机访问服务器
你可以使用常规的 Docker 的 `run` 命令来运行 WASM 容器应用程序。请注意,你确实需要指定 `runtime``platform` 标志,告知 Docker 这是一个非 Linux 容器,并且需要 WasmEdge 来运行它。由于这是一个 HTTP 服务器应用,还需要将容器的端口 8080 映射到主机,以便你可以从主机访问服务器

```bash
$ docker run -dp 8080:8080 --rm --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm secondstate/node-example-server:latest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ sidebar_position: 1

## 使用一行指令安装 WasmEdge

安装 WasmEdge 的最简单方式是运行以下命令。你应该具有 root 或至少 `sudo` 权限。在运行此命令之前,您的系统应该已经安装了 `git``curl`
安装 WasmEdge 的最简单方式是运行以下命令。你应该具有 root 或至少 `sudo` 权限。在运行此命令之前,你的系统应该已经安装了 `git``curl`

```bash
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- -p /usr/local
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ dnf install wasmedge

## 安装 WasmEdge 插件和依赖项

WasmEdge 使用插件来扩展其功能。如果您想使用更多 WasmEdge 的功能,可以按下面的说明安装 WasmEdge 以及其插件和扩展:
WasmEdge 使用插件来扩展其功能。如果你想使用更多 WasmEdge 的功能,可以按下面的说明安装 WasmEdge 以及其插件和扩展:

### TLS 插件

Expand Down Expand Up @@ -158,7 +158,7 @@ WasmEdge 支持多种 `WASI-NN` 的后端。

注意,WasmEdge 0.13.5 的安装程序将自动检测 CUDA。如果检测到 CUDA,安装程序将始终尝试安装支持 CUDA 的插件版本。

如果您的机器上只有CPU可用,那么需要安装 OpenBLAS 版本的插件。
如果你的机器上只有CPU可用,那么需要安装 OpenBLAS 版本的插件。

```
apt update && apt install -y libopenblas-dev # You may need sudo if the user is not root.
Expand Down Expand Up @@ -362,7 +362,7 @@ ln -s libtensorflow_framework.2.dylib ~/.wasmedge/lib/libtensorflow_framework.dy

### TensorFlow-Lite 依赖

如果未使用安装程序安装 `WasmEdge-TensorflowLite` 插件,您可以使用以下命令下载共享库
如果未使用安装程序安装 `WasmEdge-TensorflowLite` 插件,你可以使用以下命令下载共享库

```bash
VERSION=TF-2.12.0-CC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ function _runWasm(reqBody) {
}
```

`hello.js` 中的 `exports.handler` 部分导出了一个异步函数处理程序,用于处理每次调用无服务器函数时的不同事件。在本例中,我们简单地通过调用上述函数处理图像并返回结果,但可以根据你的需求定义更复杂的事件处理行为。此外,我们还需要返回一些 `Access-Control-Allow` 标头以避免在从浏览器调用无服务器函数时出现 [跨源资源共享(CORS)](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS) 错误。如果您在复制我们的示例时遇到 CORS 错误,可以在[这里](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS/Errors)了解更多关于 CORS 错误的信息。
`hello.js` 中的 `exports.handler` 部分导出了一个异步函数处理程序,用于处理每次调用无服务器函数时的不同事件。在本例中,我们简单地通过调用上述函数处理图像并返回结果,但可以根据你的需求定义更复杂的事件处理行为。此外,我们还需要返回一些 `Access-Control-Allow` 标头以避免在从浏览器调用无服务器函数时出现 [跨源资源共享(CORS)](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS) 错误。如果你在复制我们的示例时遇到 CORS 错误,可以在[这里](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS/Errors)了解更多关于 CORS 错误的信息。

```javascript
exports.handler = async function (event, context) {
Expand Down Expand Up @@ -173,9 +173,9 @@ docker run -p 9000:8080 myfunction:latest
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
```

你应该在终端中获得您期望的输出
你应该在终端中获得你期望的输出

如果你不想使用 AWS Lambda 的基础镜像,您也可以使用自己的基础镜像,并在构建 Docker 镜像时安装 RIC 和/或 RIE。只需按照[此指南](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)中的 **Create an image from an alternative base image** 部分进行操作。
如果你不想使用 AWS Lambda 的基础镜像,你也可以使用自己的基础镜像,并在构建 Docker 镜像时安装 RIC 和/或 RIE。只需按照[此指南](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)中的 **Create an image from an alternative base image** 部分进行操作。

准备就绪!在构建完 Docker 镜像后,可以参考存储库 [README](https://github.com/second-state/aws-lambda-wasm-runtime/blob/tensorflow/README.md#deploy)中简述的步骤将其部署到 AWS Lambda。然后你的无服务器函数就可以开始工作了!

Expand Down Expand Up @@ -267,6 +267,6 @@ function _runWasm(reqBody) {
exports.handler = ... // _runWasm(reqBody) is called in the handler
```

你可以按照之前的示例中概述的方式构建您的 Docker 镜像并部署函数。现在您已经创建了一个用于主题分类的 Web 应用!
你可以按照之前的示例中概述的方式构建你的 Docker 镜像并部署函数。现在你已经创建了一个用于主题分类的 Web 应用!

接下来,轮到你使用 [aws-lambda-wasm-runtime 存储库](https://github.com/second-state/aws-lambda-wasm-runtime/tree/main) 作为模板,在 AWS Lambda 上开发 Rust 无服务器函数了。期待着您的出色工作
接下来,轮到你使用 [aws-lambda-wasm-runtime 存储库](https://github.com/second-state/aws-lambda-wasm-runtime/tree/main) 作为模板,在 AWS Lambda 上开发 Rust 无服务器函数了。期待着你的出色工作
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ sidebar_position: 4

我们还提供了一个代码模板,用于在腾讯云上部署无服务器的 WebAssembly 函数,请查看 [tencent-scf-wasm-runtime 存储库](https://github.com/second-state/tencent-scf-wasm-runtime)

Fork 这个存储库并开始编写您自己的 Rust 函数。
Fork 这个存储库并开始编写你自己的 Rust 函数。

Original file line number Diff line number Diff line change
Expand Up @@ -191,4 +191,4 @@ module.exports = (req, res) => {

现在,你可以[将你 Fork 的存储库部署到 Vercel](https://vercel.com/docs/git#deploying-a-git-repository),获得一个用于主题分类的 Web 应用。

接下来,轮到你使用 [vercel-wasm-runtime 存储库](https://github.com/second-state/vercel-wasm-runtime) 作为模板,在 Vercel 中开发你自己的 Rust 无服务器函数了。期待着您出色的工作
接下来,轮到你使用 [vercel-wasm-runtime 存储库](https://github.com/second-state/vercel-wasm-runtime) 作为模板,在 Vercel 中开发你自己的 Rust 无服务器函数了。期待着你出色的工作
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ WasmEdge([CNCF 旗下的沙盒项目](https://www.cncf.io/projects/wasmedge/)

WasmEdge 可以与现有的云原生基础设施无缝集成。

要将 WasmEdge 与你现有的云原生基础架构集成,有几种管理 WASM 应用程序作为 Kubernetes 下的“容器”的选项。这些选项使您能够在 Kubernetes 集群中同时运行 Linux 容器和 WASM 容器。
要将 WasmEdge 与你现有的云原生基础架构集成,有几种管理 WASM 应用程序作为 Kubernetes 下的“容器”的选项。这些选项使你能够在 Kubernetes 集群中同时运行 Linux 容器和 WASM 容器。

**选项 #1**[使用 OCI 运行时 crun](../../develop/deploy/oci-runtime/crun.md)(runc 的 C 版本,主要由 Red Hat 支持)。crun 根据镜像注释决定 OCI 镜像是 WASM 还是基于 Linux 的。如果镜像被注释为 wasm32,则 crun 将绕过 Linux 容器设置,直接使用 WasmEdge 运行镜像。通过使用 crun,你可以让整个 Kubernetes 栈(包括 CRI-O、containerd、Podman、kind、micro k8s 和 k8s)与 WASM 镜像一起工作。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ WasmEdge 是云原生和边缘计算应用的“无服务器”运行时。它

## 将 WasmEdge 嵌入到主机应用程序中

WasmEdge 的一个主要用例是从主机应用程序启动虚拟机实例。根据你的主机应用程序编程语言,您可以使用 WasmEdge SDK 来启动和调用 WasmEdge 函数。
WasmEdge 的一个主要用例是从主机应用程序启动虚拟机实例。根据你的主机应用程序编程语言,你可以使用 WasmEdge SDK 来启动和调用 WasmEdge 函数。

- 使用 [WasmEdge C API](/category/c-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到基于 `C` 的应用程序中。查看[快速入门指南](../../embed/c/intro.md)
- 使用 [WasmEdge Go API](/category/go-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到 `Go` 应用程序中。这里有一个[教程](https://www.secondstate.io/articles/extend-golang-app-with-webassembly-rust/) 和一些[示例](https://github.com/second-state/WasmEdge-go-examples)
Expand Down

0 comments on commit 82f8320

Please sign in to comment.