Docker Desktop에서 Wasm 워크로드 실행하기
Docker Desktop에서 Wasm 워크로드 실행하기
WebAssembly(Wasm)는 Linux 및 Windows 컨테이너에 비해 빠르고 가벼운 대안이에요. Docker Desktop으로 전통적인 컨테이너 옆에서 Wasm 워크로드를 실행할 수 있어요.
본문
- 가용성: Beta
중요: Wasm 워크로드는 deprecated이며 향후 Docker Desktop 릴리스에서 제거될 예정이에요. 이 기능은 더 이상 적극적으로 유지보수되지 않아요.
Docker Wasm 기술 미리보기 블로그에서 Wasm 사용 사례와 장단점을 더 배울 수 있어요.
Wasm 워크로드 켜기
Wasm 워크로드는 containerd 이미지 스토어 기능이 켜져 있어야 해요. 아직 containerd 이미지 스토어를 쓰고 있지 않다면, 기존 이미지와 컨테이너에 접근할 수 없게 돼요.
- Docker Desktop에서 Settings 로 이동해요.
- General 탭에서 Use containerd for pulling and storing images 를 체크해요.
- Features in development 로 가서 Enable Wasm 옵션을 체크해요.
- Apply 를 선택해 설정을 저장해요.
- 확인 대화상자에서 Install 을 선택해 Wasm 런타임을 설치해요.
Docker Desktop이 다음 런타임을 다운로드하고 설치해요.
io.containerd.slight.v1io.containerd.spin.v2io.containerd.wasmedge.v1io.containerd.wasmtime.v1io.containerd.lunatic.v1io.containerd.wws.v1io.containerd.wasmer.v1
사용 예시
docker run으로 Wasm 애플리케이션 실행하기
다음 docker run 명령은 시스템에서 Wasm 컨테이너를 시작해요.
$ docker run \
--runtime=io.containerd.wasmedge.v1 \
--platform=wasi/wasm \
secondstate/rust-example-hello
이 명령을 실행한 후 http://localhost:8080/ 을 방문하면 이 예제 모듈의 "Hello world" 출력을 볼 수 있어요. 오류가 발생하면 트러블슈팅 섹션을 참고하세요.
이 명령에 쓰인 --runtime과 --platform 플래그에 주목하세요.
--runtime=io.containerd.wasmedge.v1: Docker Engine에 표준 Linux 컨테이너 런타임 대신 Wasm containerd shim을 사용하겠다고 알려줘요.--platform=wasi/wasm: 사용하려는 이미지의 아키텍처를 지정해요. Wasm 아키텍처를 활용하면 서로 다른 머신 아키텍처용으로 별도 이미지를 빌드할 필요가 없어요. Wasm 런타임이 Wasm 바이너리를 머신 명령어로 변환하는 마지막 단계를 처리해요.
Docker Compose로 Wasm 애플리케이션 실행하기
같은 애플리케이션을 다음 Compose 파일로 실행할 수 있어요.
services:
app:
image: secondstate/rust-example-hello
platform: wasi/wasm
runtime: io.containerd.wasmedge.v1
일반 Docker Compose 명령으로 애플리케이션을 시작해요.
$ docker compose up
Wasm으로 멀티 서비스 애플리케이션 실행하기
네트워킹은 Linux 컨테이너에서 기대하는 것과 똑같이 동작해서, 단일 애플리케이션 스택에서 데이터베이스 같은 다른 컨테이너화된 워크로드와 Wasm 애플리케이션을 결합할 수 있는 유연성을 줘요. 다음 예시에서 Wasm 애플리케이션은 컨테이너로 실행 중인 MariaDB 데이터베이스를 활용해요.