Wasm image in your image store.
```console
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
server latest 2c798ddecfa1 2 minutes ago 3MB
```
Inspecting the image shows the image has a `wasi/wasm` platform, a
combination of OS and architecture:
```console
$ docker image inspect server | grep -A 3 "Architecture"
"Architecture": "wasm",
"Os": "wasi",
"Size": 3001146,
"VirtualSize": 3001146,
```
3. Open the URL `http://localhost:8090` in a browser and create a few sample
orders. All of these are interacting with the Wasm server.
4. When you're all done, tear everything down by hitting `Ctrl+C` in the
terminal you launched the application.
### Building and pushing a Wasm module
1. Create a Dockerfile that builds your Wasm application.
Exactly how to do this varies depending on the programming language you use.
2. In a separate stage in your `Dockerfile`, extract the module and set it as
the `ENTRYPOINT`.
```dockerfile
# syntax=docker/dockerfile:1
FROM scratch
COPY --from=build /build/hello_world.wasm /hello_world.wasm
ENTRYPOINT [ "/hello_world.wasm" ]
```
3. Build and push the image specifying the `wasi/wasm` architecture. Buildx
makes this easy to do in a single command.
```console
$ docker buildx build --platform wasi/wasm -t username/hello-world .
...
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => exporting manifest sha256:2ca02b5be86607511da8dc688234a5a00ab4d58294ab9f6beaba48ab3ba8de56 0.0s
=> => exporting config sha256:a45b465c3b6760a1a9fd2eda9112bc7e3169c9722bf9e77cf8c20b37295f954b 0.0s
=> => naming to docker.io/username/hello-world:latest 0.0s
=> => unpacking to docker.io/username/hello-world:latest 0.0s
$ docker push username/hello-world
```
## Troubleshooting
This section contains instructions on how to resolve common issues.
### Unknown runtime specified
If you try to run a Wasm container without the [containerd image
store](./containerd.md), an error similar to the following displays:
```text
docker: Error response from daemon: Unknown runtime specified io.containerd.wasmedge.v1.
```
[Turn on the containerd feature](./containerd.md#enable-the-containerd-image-store)
in Docker Desktop settings and try again.
### Failed to start shim: failed to resolve runtime path
If you use an older version of Docker Desktop that doesn't support running Wasm
workloads, you will see an error message similar to the following:
```text
docker: Error response from daemon: failed to start shim: failed to resolve runtime path: runtime "io.containerd.wasmedge.v1" binary not installed "containerd-shim-wasmedge-v1": file does not exist: unknown.
```
Update your Docker Desktop to the latest version and try again.
## Known issues
- Docker Compose may not exit cleanly when interrupted. As a workaround, clean up `docker-compose` processes by sending them a SIGKILL (`killall -9 docker-compose`).
- Pushes to Docker Hub might give an error stating `server message: insufficient_scope: authorization failed`, even after signing in through Docker Desktop. As a workaround, run `docker login` in the CLI