{"id":60397,"date":"2023-04-27T09:00:38","date_gmt":"2023-04-27T00:00:38","guid":{"rendered":"https:\/\/www.creationline.com\/?p=60397"},"modified":"2023-08-29T15:30:21","modified_gmt":"2023-08-29T06:30:21","slug":"docker%e3%81%a7wasm%e3%82%92%e5%8b%95%e3%81%8b%e3%81%9d%e3%81%86-docker-webassembly-wasm-wasi","status":"publish","type":"post","link":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397","title":{"rendered":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi"},"content":{"rendered":"<p><a href=\"https:\/\/developer.mozilla.org\/ja\/docs\/WebAssembly\">WebAssembly<\/a> (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b <a href=\"https:\/\/wasi.dev\/\">WASI<\/a> (WebAssembly System Interface) \u3068\u3044\u3046\u4ed5\u7d44\u307f\u3092\u4f7f\u3046\u3068\u3001WASM \u3092\u30d6\u30e9\u30a6\u30b6\u5916\u3067\u52d5\u304b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002WASI\u306f\u300c\u30b3\u30f3\u30c6\u30ca\u306e\u6b21\u300d\u3068\u306a\u308b\u30dd\u30fc\u30bf\u30d6\u30eb\u3067\u30bb\u30ad\u30e5\u30a2\u306a\u4ed5\u7d44\u307f\u3068\u3057\u3066\u6ce8\u76ee\u3092\u96c6\u3081\u3066\u3044\u307e\u3059\u3002\u672c\u7a3f\u3067\u306f <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\"><strong>Docker Desktop<\/strong><\/a> <strong>\u3092\u4f7f\u308f\u305a\u306b\u3001<\/strong>Docker\u3067WASM\u3092\u52d5\u304b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><strong>\u6ce8\u610f: \u672c\u7a3f\u306e\u5185\u5bb9\u306f\u5b9f\u9a13\u3067\u3042\u308a\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u958b\u767a\u4e2d\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u591a\u6570\u5229\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u4eca\u5f8c\u52d5\u4f5c\u304c\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/strong><\/p>\n<h2>Docker\u306e\u6e96\u5099<\/h2>\n<p>Docker\u3067WASM\u3092\u52d5\u304b\u3059\u306b\u306f\u3001<a href=\"\/lab\/60373\">containerd\u30a4\u30e1\u30fc\u30b8\u30b9\u30c8\u30a2\u3078\u306e\u7d71\u5408<\/a> \u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u3053\u3067\u306f<\/p>\n<ul>\n<li><a href=\"https:\/\/rockylinux.org\/\">Rocky Linux 9<\/a> \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u4eee\u60f3\u30de\u30b7\u30f3<\/li>\n<li>Docker 24.0.0-beta.2 \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<li><a href=\"https:\/\/github.com\/containerd\/stargz-snapshotter\">Stargz Snapshotter<\/a> \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a<\/li>\n<\/ul>\n<p>\u304c\u5b8c\u4e86\u3057\u3066\u3044\u308b\u3082\u306e\u3068\u3057\u307e\u3059\u3002<\/p>\n<h2>WasmEdge\u306e\u6e96\u5099<\/h2>\n<p><a href=\"https:\/\/wasmedge.org\/\">WasmEdge<\/a> \u3068\u306f\u3001WASI \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3067\u304d\u308b\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30fc\u30f3\u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u4e00\u7a2e\u3067\u3059\u3002\u904e\u53bb\u8a18\u4e8b\u300c<a href=\"\/lab\/60328\">Ruby\u3067WebAssembly\u3092\u8a66\u3057\u3066\u307f\u3088\u3046<\/a>\u300d\u3067\u7d39\u4ecb\u3057\u305f <a href=\"https:\/\/wasmtime.dev\/\">Wasmtime<\/a> \u3084 <a href=\"https:\/\/wasmer.io\/\">Wasmer<\/a> \u306e\u4ef2\u9593\u3067\u3059\u3002<br \/>\n\u672c\u7a3f\u3067\u6570\u3042\u308b\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30fc\u30f3\u30e9\u30f3\u30bf\u30a4\u30e0\u304b\u3089WasmEdge\u3092\u9078\u629e\u3057\u305f\u306e\u306f\u3001<a href=\"https:\/\/wasmedge.org\/docs\/develop\/build-and-run\/docker_wasm\/\">Docker Desktop \u306b\u5185\u8535<\/a> \u3055\u308c\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002<\/p>\n<p>\u3067\u306f WasmEdge \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ curl -sSf https:\/\/raw.githubusercontent.com\/WasmEdge\/WasmEdge\/master\/utils\/install.sh | bash\nUsing Python: \/usr\/bin\/python3\ncat: \/etc\/lsb-release: No such file or directory\nException on process, rc= 1 output= b&#039;&#039; [&#039;cat \/etc\/lsb-release | grep RELEASE&#039;]\n\/bin\/sh: line 1: lsb_release: command not found\nCompatible with current configuration\nRunning Uninstaller\n\/usr\/bin\/which: no wasmedge in (\/home\/vagrant\/.local\/bin:\/home\/vagrant\/bin:\/usr\/local\/bin:\/usr\/bin:\/usr\/local\/sbin:\/usr\/sbin)\nWARNING - Uninstaller did not find previous installation\nWARNING - SHELL variable not found. Using bash as SHELL\nshell configuration updated\nDownloading WasmEdge\n|============================================================|100.02 %Downloaded\nInstalling WasmEdge\nWasmEdge Successfully installed\nRun:\nsource \/home\/vagrant\/.bashrc\n$\n<\/pre>\n<p>\u3069\u3046\u3084\u3089\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4ee5\u4e0b\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ find .wasmedge\/\n.wasmedge\/\n.wasmedge\/plugin\n.wasmedge\/plugin\/libwasmedgePluginWasmEdgeProcess.so\n.wasmedge\/env\n.wasmedge\/include\n.wasmedge\/include\/wasmedge\n.wasmedge\/include\/wasmedge\/int128.h\n.wasmedge\/include\/wasmedge\/enum_types.h\n.wasmedge\/include\/wasmedge\/enum.inc\n.wasmedge\/include\/wasmedge\/enum_errcode.h\n.wasmedge\/include\/wasmedge\/enum_configure.h\n.wasmedge\/include\/wasmedge\/version.h\n.wasmedge\/include\/wasmedge\/wasmedge.h\n.wasmedge\/lib\n.wasmedge\/lib\/libwasmedge.so.0.0.1\n.wasmedge\/lib\/libwasmedge.so.0\n.wasmedge\/lib\/libwasmedge.so\n.wasmedge\/bin\n.wasmedge\/bin\/wasmedge\n.wasmedge\/bin\/wasmedgec\n$\n<\/pre>\n<p>\u904e\u53bb\u8a18\u4e8b\u300c<a href=\"\/lab\/60328\">Ruby\u3067WebAssembly\u3092\u8a66\u3057\u3066\u307f\u3088\u3046<\/a>\u300d\u3067\u4f5c\u3063\u305f hello.wasm \u3092 WasmEdge \u3067\u52d5\u304b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ source \/home\/vagrant\/.bashrc\n$ wasmedge hello.wasm \/src\/hello.rb\nHello, world!\n$\n<\/pre>\n<p>Wasmtime \u3084 Wasmer \u540c\u69d8\u306b\u52d5\u4f5c\u3057\u307e\u3057\u305f\u3002<\/p>\n<h2>runwasi\u306e\u6e96\u5099<\/h2>\n<p><a href=\"https:\/\/github.com\/containerd\/runwasi\">runwasi<\/a>\u3068\u306f\u3001<a href=\"https:\/\/containerd.io\/\">containerd<\/a> \u304b\u3089 WASI \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f\u3067\u3059\u3002containerd \u304b\u3089 WASI \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u52d5\u304b\u305b\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001containerd \u3092\u5229\u7528\u3057\u3066\u3044\u308b Docker \u3084 Kubernetes \u3067 WASI \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u52d5\u304b\u305b\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002<br \/>\nrunwasi \u306f wasmtime \u3068 WasmEdge \u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u672c\u7a3f\u3067\u306f\u524d\u8ff0\u306e\u901a\u308a WasmEdge \u3092\u4f7f\u3044\u307e\u3059\u3002<\/p>\n<h3>WasmEdge\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n<p>\u5148\u7a0b\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f WasmEdge \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30b7\u30b9\u30c6\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ sudo cp -a .wasmedge\/lib\/libwasmedge.so* \/usr\/local\/lib\/\n$ sudo -E sh -c &#039;echo &quot;\/usr\/local\/lib&quot; &gt; \/etc\/ld.so.conf.d\/libwasmedge.conf&#039;\n$ sudo ldconfig\n$\n<\/pre>\n<h3>runwasi\u306e\u30d3\u30eb\u30c9<\/h3>\n<p>runwasi Git\u30ec\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3001 containerd-shim-wasm\/v0.1.2 \u30bf\u30b0\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ git clone https:\/\/github.com\/containerd\/runwasi\n$ cd runwasi\n$ git checkout containerd-shim-wasm\/v0.1.2\n$\n<\/pre>\n<p>\u3053\u3053\u3067\u30d3\u30eb\u30c9\u2026\u3068\u3044\u304d\u305f\u3044\u306e\u3067\u3059\u304c\u3001RockyLinux 9 \u53ce\u9332\u306e Cargo \u304c 1.62.1 \u3067\u3042\u308a\u30011.64.0 \u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3044\u308b runwasi \u306f\u30d3\u30eb\u30c9\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ cargo test -- --nocapture\nerror: failed to load manifest for workspace member `\/home\/vagrant\/runwasi\/crates\/containerd-shim-wasm`\n\nCaused by:\nfailed to parse manifest at `\/home\/vagrant\/runwasi\/crates\/containerd-shim-wasm\/Cargo.toml`\n\nCaused by:\nfeature `workspace-inheritance` is required\n\nThe package requires the Cargo feature called `workspace-inheritance`, but that feature is not stabilized in this version of Cargo (1.62.1).\nConsider trying a newer version of Cargo (this may require the nightly release).\nSee https:\/\/doc.rust-lang.org\/nightly\/cargo\/reference\/unstable.html#workspace-inheritance for more information about the status of this feature.\n$ rpm -q cargo\ncargo-1.62.1-1.el9.x86_64\n$\n<\/pre>\n<p>\u305d\u3053\u3067\u3001Docker\u3092\u4f7f\u3063\u3066\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker image build -t runwasi .\n[+] Building 640.7s (23\/23) FINISHED\n=&gt; [internal] load .dockerignore 0.2s\n=&gt; =&gt; transferring context: 181B 0.0s\n=&gt; [internal] load build definition from Dockerfile 0.2s\n=&gt; =&gt; transferring dockerfile: 2.94kB 0.0s\n=&gt; resolve image config for docker.io\/docker\/dockerfile:1 3.0s\n=&gt; docker-image:\/\/docker.io\/docker\/dockerfile:1@sha256:39b85bbfa7536a5fe 3.0s\n=&gt; =&gt; resolve docker.io\/docker\/dockerfile:1@sha256:39b85bbfa7536a5feceb7 0.2s\n=&gt; =&gt; sha256:39b85bbfa7536a5feceb7372a0817649ecb2724562a 8.40kB \/ 8.40kB 0.0s\n=&gt; =&gt; sha256:966d40f9ba8366e74c2fa353fc0bc7bbc167d2a0f3ad242 482B \/ 482B 0.0s\n=&gt; =&gt; sha256:dbdd11720762ad504260c66161c964e59eba06b95a7 2.90kB \/ 2.90kB 0.0s\n=&gt; =&gt; sha256:a47ff7046597eea0123ea02817165350e3680f750 11.55MB \/ 11.55MB 1.4s\n=&gt; =&gt; extracting sha256:a47ff7046597eea0123ea02817165350e3680f75000dc5d6 0.6s\n=&gt; [internal] load metadata for docker.io\/library\/rust:1.64 3.9s\n=&gt; [internal] load metadata for docker.io\/tonistiigi\/xx:1.1.0 4.3s\n=&gt; [internal] load build context 0.7s\n=&gt; =&gt; transferring context: 317.55kB 0.0s\n=&gt; [base 1\/3] FROM docker.io\/library\/rust:1.64@sha256:53ded1c919ea0dc23 72.8s\n=&gt; =&gt; resolve docker.io\/library\/rust:1.64@sha256:53ded1c919ea0dc23be959e 0.8s\n=&gt; =&gt; sha256:53ded1c919ea0dc23be959e28037238d8c321cd88fbac04 988B \/ 988B 0.0s\n=&gt; =&gt; sha256:44ba8b8d8a2993694926cc847e1cce27937550c2e9e 1.59kB \/ 1.59kB 0.0s\n=&gt; =&gt; sha256:dd3f19acb68106e1b124cade911fc4c41ee098533ba 6.42kB \/ 6.42kB 0.0s\n=&gt; =&gt; sha256:de4a4c6caea8801bb0b7377e10220a914da403bc93f 5.16MB \/ 5.16MB 1.1s\n=&gt; =&gt; sha256:17c9e6141fdb3387e5a1c07d4f9b6a05ac1498e9 55.05MB \/ 55.05MB 13.9s\n=&gt; =&gt; sha256:4edced8587e6c18412817019074f5e04a8ede4e2f 10.88MB \/ 10.88MB 5.9s\n=&gt; =&gt; sha256:a7969cffbf46e6a91291fd76b19ecbe93c03ea4d 54.59MB \/ 54.59MB 12.7s\n=&gt; =&gt; sha256:74fbfde6af91271fb88f0a1716224dcce5c0eb 196.87MB \/ 196.87MB 43.2s\n=&gt; =&gt; sha256:9253f8c367c00e02371372b42faef03795cace 148.95MB \/ 148.95MB 42.3s\n=&gt; =&gt; extracting sha256:17c9e6141fdb3387e5a1c07d4f9b6a05ac1498e96029fa3e 4.3s\n=&gt; =&gt; extracting sha256:de4a4c6caea8801bb0b7377e10220a914da403bc93fa7966 0.5s\n=&gt; =&gt; extracting sha256:4edced8587e6c18412817019074f5e04a8ede4e2fc89d06a 0.5s\n=&gt; =&gt; extracting sha256:a7969cffbf46e6a91291fd76b19ecbe93c03ea4ded0d1404 4.9s\n=&gt; =&gt; extracting sha256:74fbfde6af91271fb88f0a1716224dcce5c0ebead360994 14.4s\n=&gt; =&gt; extracting sha256:9253f8c367c00e02371372b42faef03795cace79aed82d8 11.4s\n=&gt; [xx 1\/1] FROM docker.io\/tonistiigi\/xx:1.1.0@sha256:38b94c9b7d64f3154 17.3s\n=&gt; =&gt; resolve docker.io\/tonistiigi\/xx:1.1.0@sha256:38b94c9b7d64f31544c9f 0.9s\n=&gt; =&gt; sha256:38b94c9b7d64f31544c9fd7a979fa856ab50b2b41cf 2.65kB \/ 2.65kB 0.0s\n=&gt; =&gt; sha256:44baf01e2b60ed9abdd47f1c8e6cf8916b70a48c93016dd 525B \/ 525B 0.0s\n=&gt; =&gt; sha256:156f8400f6eb0df86c13844ba62bf5c21fafda08f0c2f50 940B \/ 940B 0.0s\n=&gt; =&gt; sha256:9b3b2510e20ad4453410e380667d4f482b9dc5f8 14.84kB \/ 14.84kB 15.3s\n=&gt; =&gt; extracting sha256:9b3b2510e20ad4453410e380667d4f482b9dc5f82e3023eb 0.1s\n=&gt; [base 2\/3] COPY --from=xx \/ \/ 14.1s\n=&gt; [base 3\/3] RUN apt-get update -y &amp;&amp; apt-get install --no-install-rec 28.5s\n=&gt; [build 1\/10] RUN xx-apt-get install -y gcc g++ libc++6-dev zlib1g 209.5s\n=&gt; [build 2\/10] RUN rustup target add $(xx-info march)-unknown-$(xx-inf 1.7s\n=&gt; [build 3\/10] RUN &lt; [build 4\/10] WORKDIR \/build\/src 1.1s\n=&gt; [build 5\/10] COPY --link crates .\/crates 0.9s\n=&gt; [build 6\/10] COPY --link Cargo.toml .\/ 0.9s\n=&gt; [build 7\/10] COPY --link Cargo.lock .\/ 0.9s\n=&gt; [build 8\/10] RUN --mount=type=cache,target=\/usr\/local\/cargo\/git\/db 280.0s\n=&gt; [build 9\/10] COPY scripts .\/scripts 1.0s\n=&gt; [build 10\/10] RUN --mount=type=cache,target=\/usr\/local\/cargo\/git\/db 2.8s\n=&gt; [release 1\/1] COPY --link --from=build \/build\/bin\/* \/ 1.3s\n=&gt; exporting to image 1.3s\n=&gt; =&gt; exporting layers 1.2s\n=&gt; =&gt; writing image sha256:d7eb6526bf031c3d8e2940fb5f5a991381b6f3cb2ec2c 0.0s\n=&gt; =&gt; naming to docker.io\/library\/runwasi 0.0s\n$\n<\/pre>\n<p>Docker\u30a4\u30e1\u30fc\u30b8\u3092\u5206\u89e3\u3057\u3001\u4e2d\u304b\u3089\u5fc5\u8981\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u51fa\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker image save runwasi | tar xf -\n$ tar xvf 9ac116108171d9081f8d023d32618fdbbd2ff39307c35d209641960424a9f3b8\/layer.tar\ncontainerd-shim-wasmedge-v1\ncontainerd-shim-wasmedged-v1\ncontainerd-shim-wasmtime-v1\ncontainerd-shim-wasmtimed-v1\ncontainerd-wasmedged\ncontainerd-wasmtimed\nwasi-demo-app\n$\n<\/pre>\n<p>\u3053\u306e containerd-* \u304c\u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002<\/p>\n<h3>runwasi\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n<p>\u5148\u7a0b\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u53d6\u308a\u51fa\u3057\u305f containerd-* \u3092 \/usr\/bin \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ sudo cp containerd-* \/usr\/bin\n$ ls -l \/usr\/bin\/containerd*\n-rwxr-xr-x. 1 root root 52181200 Mar 31 16:27 \/usr\/bin\/containerd\n-rwxr-xr-x. 1 root root 7348224 Mar 31 16:27 \/usr\/bin\/containerd-shim\n-rwxr-xr-x. 1 root root 9461760 Mar 31 16:27 \/usr\/bin\/containerd-shim-runc-v1\n-rwxr-xr-x. 1 root root 9482240 Mar 31 16:27 \/usr\/bin\/containerd-shim-runc-v2\n-rwxr-xr-x. 1 root root 6809232 Apr 20 03:38 \/usr\/bin\/containerd-shim-wasmedged-v1\n-rwxr-xr-x. 1 root root 9048000 Apr 20 03:38 \/usr\/bin\/containerd-shim-wasmedge-v1\n-rwxr-xr-x. 1 root root 6804984 Apr 20 03:38 \/usr\/bin\/containerd-shim-wasmtimed-v1\n-rwxr-xr-x. 1 root root 16672792 Apr 20 03:38 \/usr\/bin\/containerd-shim-wasmtime-v1\n-rwxr-xr-x. 1 root root 9449304 Apr 20 03:38 \/usr\/bin\/containerd-wasmedged\n-rwxr-xr-x. 1 root root 17075216 Apr 20 03:38 \/usr\/bin\/containerd-wasmtimed\n$\n<\/pre>\n<p>\u5ff5\u306e\u305f\u3081\u3001\u6b63\u3057\u304fWasmEdge\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ ldd \/usr\/bin\/containerd-shim-wasmedge-v1\nlinux-vdso.so.1 (0x00007ffc9db07000)\nlibwasmedge.so.0 =&gt; \/usr\/local\/lib\/libwasmedge.so.0 (0x00007fe1e1f9e000)\nlibc.so.6 =&gt; \/lib64\/libc.so.6 (0x00007fe1e1d95000)\n\/lib64\/ld-linux-x86-64.so.2 (0x00007fe1e4fc7000)\nlibgcc_s.so.1 =&gt; \/lib64\/libgcc_s.so.1 (0x00007fe1e1d7a000)\nlibrt.so.1 =&gt; \/lib64\/librt.so.1 (0x00007fe1e1d75000)\nlibpthread.so.0 =&gt; \/lib64\/libpthread.so.0 (0x00007fe1e1d70000)\nlibm.so.6 =&gt; \/lib64\/libm.so.6 (0x00007fe1e1c95000)\nlibdl.so.2 =&gt; \/lib64\/libdl.so.2 (0x00007fe1e1c8e000)\nlibz.so.1 =&gt; \/lib64\/libz.so.1 (0x00007fe1e1c74000)\nlibstdc++.so.6 =&gt; \/lib64\/libstdc++.so.6 (0x00007fe1e1a4d000)\n$\n<\/pre>\n<p>\u554f\u984c\u306a\u3044\u3088\u3046\u3067\u3059\u3002\u3053\u308c\u3067runwasi\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<h2>Docker\u3067WASM\u3092\u52d5\u304b\u3059<\/h2>\n<p>\u3067\u306f <a href=\"https:\/\/docs.docker.com\/desktop\/wasm\/#running-a-wasm-application-with-docker-run\">Running a Wasm application with docker run<\/a> \u306e\u30b5\u30f3\u30d7\u30eb WASM \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker run -dp 8080:8080 \\\n--name=wasm-example \\\n--runtime=io.containerd.wasmedge.v1 \\\n--platform=wasi\/wasm32 \\\nmichaelirwin244\/wasm-example\n80e271150b189e77e06a91b526bffabb670d56290db4f715da611a537ed1b53c\n$\n<\/pre>\n<p>\u8d77\u52d5\u3057\u307e\u3057\u305f\u3002curl \u30b3\u30de\u30f3\u30c9\u3067 localhost:8080 \u3092\u958b\u3044\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ curl localhost:8080\nHello world from Rust running with Wasm! Send POST data to \/echo to have it echoed back to you\n$\n<\/pre>\n<p>\u5fdc\u7b54\u304c\u3042\u308a\u307e\u3057\u305f\uff01 \u3055\u3089\u306b\u6307\u793a\u306b\u5f93\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ curl -d &#039;Hello, world!&#039; localhost:8080\/echo\nHello, world!\n$\n<\/pre>\n<p>\u30dd\u30b9\u30c8\u3057\u305f Hello, world! \u3092\u30a8\u30b3\u30fc\u30d0\u30c3\u30af\u3057\u3066\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u898b\u4e8b\u3001Docker\u3067WASM\u3092\u52d5\u304b\u3059\u3053\u3068\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002\u3082\u3057\u6319\u52d5\u304c\u304a\u304b\u3057\u3044\u5834\u5408\u306f docker \u3084 containerd \u3092\u518d\u8d77\u52d5\u3057\u3066\u307f\u305f\u308a\u3001WasmEdge\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u30d1\u30b9\u304c\u6b63\u3057\u3044\u304b\u306a\u3069\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2>WASM\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306e\u4f5c\u6210<\/h2>\n<p>\u3067\u306f\u3001Docker\u30a4\u30e1\u30fc\u30b8\u3082\u4f5c\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u3087\u3046\u3002\u904e\u53bb\u8a18\u4e8b\u300c<a href=\"\/lab\/60328\">Ruby\u3067WebAssembly\u3092\u8a66\u3057\u3066\u307f\u3088\u3046<\/a>\u300d\u3067\u4f5c\u3063\u305f hello.wasm \u3092\u5bfe\u8c61\u3068\u3057\u307e\u3059\u3002\u65b0\u3057\u304f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u308a\u3001\u305d\u306e\u4e2d\u306b hello.wasm \u3068\u6b21\u306eDockerfile\u3092\u914d\u7f6e\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"dockerfile\">\nFROM scratch\nCOPY hello.wasm \/hello.wasm\nENTRYPOINT [ &quot;hello.wasm&quot;, &quot;\/src\/hello.rb&quot; ]\n<\/pre>\n<p>\u3067\u306f\u30d3\u30eb\u30c9\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u969b --platform wasi\/wasm32 \u3068\u3044\u3046\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u3064\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker buildx build --platform wasi\/wasm32 -t daihiguchi\/hellowasm .\n[+] Building 5.9s (5\/5) FINISHED\n=&gt; [internal] load build definition from Dockerfile 0.0s\n=&gt; =&gt; transferring dockerfile: 182B 0.0s\n=&gt; [internal] load .dockerignore 0.0s\n=&gt; =&gt; transferring context: 2B 0.0s\n=&gt; [internal] load build context 0.9s\n=&gt; =&gt; transferring context: 55.94MB 0.9s\n=&gt; [1\/1] COPY hello.wasm \/hello.wasm 0.3s\n=&gt; ERROR exporting to image 4.5s\n=&gt; =&gt; exporting layers 4.5s\n=&gt; =&gt; exporting manifest sha256:d5fc8e593906ee2180288adbdfd2ccbd427451e3 0.0s\n=&gt; =&gt; exporting config sha256:cb519d8b3e025a185677f07bd32acdbdb9e91c693f 0.0s\n=&gt; =&gt; exporting attestation manifest sha256:0c7ec67ffec4977be93c27bb2c97 0.0s\n=&gt; =&gt; exporting manifest list sha256:6f6933e0f8dc102e51c1c7036060a20d325 0.0s\n=&gt; =&gt; naming to docker.io\/daihiguchi\/hellowasm:latest 0.0s\n=&gt; =&gt; unpacking to docker.io\/daihiguchi\/hellowasm:latest 0.0s\n------\n&gt; exporting to image:\n------\nERROR: failed to solve: no match for platform in manifest sha256:6f6933e0f8dc102e51c1c7036060a20d325efce8c69dce85628aecae5ce8ebd5: not found\n$ docker image ls\nREPOSITORY TAG IMAGE ID CREATED SIZE\ndaihiguchi\/hellowasm latest 6f6933e0f8dc 25 seconds ago 18MB\n$\n<\/pre>\n<p>\u306a\u305c\u304b\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u30a4\u30e1\u30fc\u30b8\u306f\u4f5c\u6210\u3067\u304d\u3066\u3044\u308b\u3068\u3044\u3046\u304a\u304b\u3057\u306a\u72b6\u614b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br \/>\n\u305d\u308c\u3067\u3082\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\u304c\u3001<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker container run --rm --runtime=io.containerd.wasmedge.v1 --platform=wasi\/wasm32 daihiguchi\/hellowasm\nUnable to find image &#039;daihiguchi\/hellowasm:latest&#039; locally\ndocker: Error response from daemon: failed to resolve reference &quot;docker.io\/daihiguchi\/hellowasm:latest&quot;: docker.io\/daihiguchi\/hellowasm:latest: not found.\nSee &#039;docker run --help&#039;.\n$\n<\/pre>\n<p>\u5931\u6557\u3057\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002Docker\u3068containerd\u306e\u30a4\u30e1\u30fc\u30b8\u30b9\u30c8\u30a2\u3092\u7d71\u5408\u3057\u305f\u306f\u305a\u3067\u3059\u304c\u3001\u3046\u307e\u304f\u52d5\u3044\u3066\u3044\u306a\u3044\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n<p>\u3053\u3053\u3067Docker Hub\u306b\u4e00\u65e6\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker login\nLogin with your Docker ID to push and pull images from Docker Hub. If you don&#039;t have a Docker ID, head over to https:\/\/hub.docker.com to create one.\nUsername: daihiguchi\nPassword:\nWARNING! Your password will be stored unencrypted in \/home\/vagrant\/.docker\/config.json.\nConfigure a credential helper to remove this warning. See\nhttps:\/\/docs.docker.com\/engine\/reference\/commandline\/login\/#credentials-store\n\nLogin Succeeded\n$ docker image push daihiguchi\/hellowasm\nUsing default tag: latest\n0c7ec67ffec4: Pushed\n6f6933e0f8dc: Pushed\ncb519d8b3e02: Pushed\n69e8907cb928: Pushed\n96c9c35c2bbe: Pushed\n24e93cf4a79a: Pushed\nd5fc8e593906: Pushed\n$\n<\/pre>\n<p>\u30d7\u30c3\u30b7\u30e5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002Docker Hub\u306e\u30a6\u30a7\u30d6UI\u3067\u3082\u78ba\u8a8d\u3067\u304d\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-60444\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm-1024x165.png\" alt=\"\" width=\"1024\" height=\"165\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm-1024x165.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm-360x58.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm-768x124.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm-1536x247.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/04\/dockerhub-daihiguchi-hellowasm.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>\u518d\u5ea6\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">\n$ docker container run --rm --runtime=io.containerd.wasmedge.v1 --platform=wasi\/wasm32 daihiguchi\/hellowasm\nUnable to find image &#039;daihiguchi\/hellowasm:latest&#039; locally\n6f6933e0f8dc: Exists\nd5fc8e593906: Exists\ncb519d8b3e02: Exists\n69e8907cb928: Exists\nHello, world!\n<\/pre>\n<p>\u4eca\u5ea6\u306f\u8d77\u52d5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\uff01 \u305f\u3060\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u7d42\u4e86\u305b\u305a\u306b\u5f37\u5236\u7684\u306b kill \u3059\u308b\u3053\u3068\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u304c\u2026\u3068\u306b\u304b\u304f\u76ee\u7684\u306f\u9054\u6210\u3067\u3059\u3002<\/p>\n<h2>\u307e\u3068\u3081<\/h2>\n<p>\u672c\u7a3f\u3067\u306f\u3055\u307e\u3056\u307e\u306a\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u7d44\u307f\u5408\u308f\u305b\u3066Docker Desktop\u3068\u307b\u307c\u540c\u7b49\u306e\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3001Docker\u4e0a\u3067WASM\u3092\u52d5\u304b\u3057\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n\u307e\u3060\u307e\u3060\u30d9\u30fc\u30bf\u7248\u30fb\u958b\u767a\u4e2d\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3084\u6a5f\u80fd\u3070\u304b\u308a\u3067\u69cb\u7bc9\u3059\u308b\u306e\u3082\u4e00\u82e6\u52b4\u3067\u3059\u304c\u3001\u6210\u719f\u304c\u9032\u3081\u3093\u3067\u624b\u8efd\u306b\u306a\u308c\u3070WASM\u304c\u52d5\u3044\u3066\u3044\u308bDocker\u74b0\u5883\u3068\u3044\u3046\u306e\u3082\u5897\u3048\u3066\u3044\u304f\u3068\u601d\u3044\u307e\u3059\u3002\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\u3067\u306f\u5f15\u304d\u7d9a\u304d WebAssmbly \u3068 Docker \u306b\u3064\u3044\u3066\u8abf\u67fb\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI (WebAssembly System Interface) \u3068\u3044\u3046\u4ed5\u7d44\u307f\u3092\u4f7f\u3046 [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":58360,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[31,43],"tags":[],"class_list":["post-60397","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-higuchi","category-docker"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3<\/title>\n<meta name=\"description\" content=\"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"og:description\" content=\"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397\" \/>\n<meta property=\"og:site_name\" content=\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/creationline\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-27T00:00:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T06:30:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1506\" \/>\n\t<meta property=\"og:image:height\" content=\"795\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daisuke Higuchi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@creationline\" \/>\n<meta name=\"twitter:site\" content=\"@creationline\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daisuke Higuchi\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397\"},\"author\":{\"name\":\"Daisuke Higuchi\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\"},\"headline\":\"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi\",\"datePublished\":\"2023-04-27T00:00:38+00:00\",\"dateModified\":\"2023-08-29T06:30:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397\"},\"wordCount\":1932,\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/WebAssembly_Logo_02.png\",\"articleSection\":[\"d-higuchi\",\"Docker\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397\",\"name\":\"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/WebAssembly_Logo_02.png\",\"datePublished\":\"2023-04-27T00:00:38+00:00\",\"dateModified\":\"2023-08-29T06:30:21+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\"},\"description\":\"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#primaryimage\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/WebAssembly_Logo_02.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/WebAssembly_Logo_02.png\",\"width\":1506,\"height\":795},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\\\/60397#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HOME\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Docker\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/docker\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/\",\"name\":\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"description\":\"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\",\"name\":\"Daisuke Higuchi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/pngout-25-230x230.png\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/pngout-25-230x230.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/pngout-25-230x230.png\",\"caption\":\"Daisuke Higuchi\"},\"description\":\"\u306f\u3084\u308a\u306e\u6280\u8853\u8981\u7d20\u306b\u52a0\u3048\u3066\u3001\u4f1a\u8b70\u306e\u9032\u3081\u65b9\u30fb\u6587\u7ae0\u306e\u66f8\u304d\u65b9\u306a\u3069\u306e\u696d\u52d9\u6539\u5584\u306b\u3082\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u300cChef\u6d3b\u7528\u30ac\u30a4\u30c9\u300d\u5171\u8457\u306e\u307b\u304b\u3001Debian Official Developer\u3082\u3084\u3063\u3066\u3044\u307e\u3059\u3002\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/author\\\/higuchi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397","og_locale":"ja_JP","og_type":"article","og_title":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","og_description":"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI","og_url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397","og_site_name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","article_publisher":"https:\/\/www.facebook.com\/creationline","article_published_time":"2023-04-27T00:00:38+00:00","article_modified_time":"2023-08-29T06:30:21+00:00","og_image":[{"width":1506,"height":795,"url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png","type":"image\/png"}],"author":"Daisuke Higuchi","twitter_card":"summary_large_image","twitter_creator":"@creationline","twitter_site":"@creationline","twitter_misc":{"\u57f7\u7b46\u8005":"Daisuke Higuchi","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"10\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#article","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397"},"author":{"name":"Daisuke Higuchi","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206"},"headline":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi","datePublished":"2023-04-27T00:00:38+00:00","dateModified":"2023-08-29T06:30:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397"},"wordCount":1932,"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png","articleSection":["d-higuchi","Docker"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397","url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397","name":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#primaryimage"},"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png","datePublished":"2023-04-27T00:00:38+00:00","dateModified":"2023-08-29T06:30:21+00:00","author":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206"},"description":"d-higuchi, Docker |WebAssembly (WASM)\u3092\u4f7f\u3046\u3068\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067JavaScript\u4ee5\u5916\u306e\u8a00\u8a9e\u3092\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b WASI","breadcrumb":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#primaryimage","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/01\/WebAssembly_Logo_02.png","width":1506,"height":795},{"@type":"BreadcrumbList","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker\/60397#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"HOME","item":"https:\/\/www.creationline.com\/tech-blog"},{"@type":"ListItem","position":2,"name":"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative"},{"@type":"ListItem","position":3,"name":"Docker","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/docker"},{"@type":"ListItem","position":4,"name":"Docker\u3067WASM\u3092\u52d5\u304b\u305d\u3046 #docker #webassembly #wasm #wasi"}]},{"@type":"WebSite","@id":"https:\/\/www.creationline.com\/tech-blog\/#website","url":"https:\/\/www.creationline.com\/tech-blog\/","name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.creationline.com\/tech-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206","name":"Daisuke Higuchi","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2026\/05\/pngout-25-230x230.png","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2026\/05\/pngout-25-230x230.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2026\/05\/pngout-25-230x230.png","caption":"Daisuke Higuchi"},"description":"\u306f\u3084\u308a\u306e\u6280\u8853\u8981\u7d20\u306b\u52a0\u3048\u3066\u3001\u4f1a\u8b70\u306e\u9032\u3081\u65b9\u30fb\u6587\u7ae0\u306e\u66f8\u304d\u65b9\u306a\u3069\u306e\u696d\u52d9\u6539\u5584\u306b\u3082\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u300cChef\u6d3b\u7528\u30ac\u30a4\u30c9\u300d\u5171\u8457\u306e\u307b\u304b\u3001Debian Official Developer\u3082\u3084\u3063\u3066\u3044\u307e\u3059\u3002","url":"https:\/\/www.creationline.com\/tech-blog\/author\/higuchi"}]}},"_links":{"self":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/60397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=60397"}],"version-history":[{"count":11,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/60397\/revisions"}],"predecessor-version":[{"id":65848,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/60397\/revisions\/65848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media\/58360"}],"wp:attachment":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=60397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=60397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=60397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}