nikkie-ftnextの日記

イベントレポートや読書メモを発信

#新宿御苑dev で知った Docker Hub で Wasm 配布のお試し記

はじめに

七尾百合子さん、お誕生日 101日目 おめでとうございます! nikkieです。

WasmはLinuxコンテナの代替」への理解がまた少し進みました

目次

2025/06/25 新宿御苑.wasm asukaさんの発表より

shinjukugyoen.connpass.com

Wasm OCI Artifact layout
→DockerHubなどを通して Wasmを配布できるように

デモではWasmがDocker Hubにpushされてすげー!👏
https://hub.docker.com/r/askua9/calculator

技術書典18で入手していたasukaさんらによるCookbookもざっと目を通し、

  • 過去のプログラムをWASI 0.2でビルド
  • Docker Hubへpush

を試しました。

Docker Hubにpushした俺のWasmを見てくれ!

https://hub.docker.com/r/ftnext/hello-wasi-cli

% wkg oci pull ftnext/hello-wasi-cli
Successfully wrote docker.io/ftnext/hello-wasi-cli:latest to ftnext_hello-wasi-cli.wasm
% wasmtime run ftnext_hello-wasi-cli.wasm
 _______________
< Hello, world! >
 ---------------
        \
         \
            _~^~^~_
        \) /  o o  \ (/
          '_   -   _'
          / '-----' \

素振り録

環境構築

% rustup update
% rustup target add wasm32-wasip2

% cargo install wasmtime-cli
% cargo install wkg
% rustup target list | grep wasm
wasm32-unknown-emscripten
wasm32-unknown-unknown (installed)
wasm32-wasip1 (installed)
wasm32-wasip1-threads
wasm32-wasip2 (installed)  # <-- これを追加しました
wasm32v1-none
% wasmtime --version
wasmtime 34.0.1
% wkg --version
wkg 0.11.0

過去のプログラムをWASI 0.2でビルド

WASI 0.2からはcargo componentなしでビルドできるとのことで(技術書典18のCookbook 3.1参照)、過去記事のferris-sayの例で試します。

% cargo build --target wasm32-wasip2
% wasmtime run target/wasm32-wasip2/debug/hello-wasi-cli.wasm

WasmをDocker Hubへpush

docker loginしておきます。
この認証情報を使うようです。

リリースビルドして、Wasmをpush

% cargo build -r --target wasm32-wasip2
% wkg oci push ftnext/hello-wasi-cli target/wasm32-wasip2/release/hello-wasi-cli.wasm
pushed: docker.io/ftnext/hello-wasi-cli:latest

pushできた!

これをpullして実行したのが、「見てくれ!」セクションでした

終わりに

新宿御苑devで知ったことから、過去に書いたWasmのHello WorldをWASI 0.2でビルドし、Docker Hubへpushしました(これもまたある種のToday I learned!)
Dockerコンテナの感覚でWasmが使えるようになってきてる! すげ〜

変更履歴

  • (2025/06/28) 「Docker Hubにpushした俺のWasmを見てくれ!」のDocker HubのURLがMy Hubのものに気づき、公開URLに差し替え