はじめに
七尾百合子さん、お誕生日 101日目 おめでとうございます! nikkieです。
「WasmはLinuxコンテナの代替」への理解がまた少し進みました
目次
2025/06/25 新宿御苑.wasm asukaさんの発表より
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に差し替え