No matching manifest for linux/arm64/v8

Hi,

I am attempting to debug a C++ project on a Verdin AM62 on a Verdin Development Board V1.1F. I am getting an error in the debub process that says that there is no matching manifest for linux/arm64/v8 in the manifest list entries.

 *  Executing task: xonsh .conf/validate-deps-running.xsh 

/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)

⚠️ VALIDATING ENVIRONMENT

OS:         Linux
OS Version: 6.18.33.1-microsoft-standard-WSL2
OS Arch:    x86_64
Under WSL:  Torizon
VS Code:
1.126.0
7e7950df89d055b5a378379db9ee14290772148a
x64

TOR Extension:  toradex.apollox-vscode@3.6.0

✅ Environment is valid!

 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: bash -c [[ ! -z "10.85.76.239" ]] && true || false 

 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: bash -c [[ "arm64" == "arm64" ]] && true || false 

 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: sshpass -p torizon scp -P 22 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PubkeyAuthentication=no /home/sabrahamian/mudelcontroller/docker-compose.yml torizon@10.85.76.239:~/ 

Warning: Permanently added '10.85.76.239' (ED25519) to the list of known hosts.
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: /home/sabrahamian/mudelcontroller/.conf/remove-dangling-images.xsh 10.85.76.239:2375 

Waiting for prune lock on host 10.85.76.239:2375
Pruning dangling images on 10.85.76.239:2375
Total reclaimed space: 0B
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: docker compose -p torizon stop mudelcontroller mudelcontroller-debug && docker compose -p torizon rm -f mudelcontroller mudelcontroller-debug && sleep 1 

No stopped containers
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: xonsh /home/sabrahamian/mudelcontroller/.conf/torizon-packages.xsh arm64 

/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)
Applying torizonPackages.json: 
Applying to Dockerfile.debug ...
✅ Dockerfile.debug
Applying to Dockerfile.sdk ...
✅ Dockerfile.sdk
Applying to Dockerfile ...
✅ Dockerfile
torizonPackages.json applied
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: DOCKER_HOST= docker build --pull -f /home/sabrahamian/mudelcontroller/Dockerfile.sdk /home/sabrahamian/mudelcontroller -t cross-toolchain-arm64-mudelcontroller --build-arg IMAGE_ARCH=arm64 --build-arg GPU=-am62 --build-arg APP_ROOT=/home/torizon/mudelcontroller 

[+] Building 0.7s (10/10) FINISHED                                                                                                           docker:default
 => [internal] load build definition from Dockerfile.sdk                                                                                               0.0s
 => => transferring dockerfile: 1.35kB                                                                                                                 0.0s
 => [internal] load metadata for docker.io/torizon/cross-toolchain-arm64:4                                                                             0.3s
 => [auth] torizon/cross-toolchain-arm64:pull token for registry-1.docker.io                                                                           0.0s
 => [internal] load .dockerignore                                                                                                                      0.0s
 => => transferring context: 56B                                                                                                                       0.0s
 => [1/5] FROM docker.io/torizon/cross-toolchain-arm64:4@sha256:834101946747214cb9718f75812351fdf7982d5fca5593f546dae5670638892a                       0.0s
 => => resolve docker.io/torizon/cross-toolchain-arm64:4@sha256:834101946747214cb9718f75812351fdf7982d5fca5593f546dae5670638892a                       0.0s
 => CACHED [2/5] RUN apt-get -q -y update &&     apt-get -q -y install     &&     apt-get clean && apt-get autoremove &&     rm -rf /var/lib/apt/list  0.0s
 => CACHED [3/5] RUN apt-get -q -y update &&     apt-get -q -y install     libgpiod-dev:arm64     &&     apt-get clean && apt-get autoremove &&     r  0.0s
 => CACHED [4/5] RUN usermod -a -G gpio torizon                                                                                                        0.0s
 => CACHED [5/5] WORKDIR /home/torizon/mudelcontroller                                                                                                 0.0s
 => exporting to image                                                                                                                                 0.2s
 => => exporting layers                                                                                                                                0.0s
 => => exporting manifest sha256:458ea4ce9ad4ff584cb6ab6e584a70da7e639a1e63d83d1ca7c508e8d5f2de48                                                      0.0s
 => => exporting config sha256:b7c645091e32201c19769168f7f486b596936ea7432591c7a890c1c7aa959cc5                                                        0.0s
 => => exporting attestation manifest sha256:5adaf3efbe546d5a48c2aa20a46d6d06bd71be7f1dc29920f629b95661c9f0a7                                          0.1s
 => => exporting manifest list sha256:c5beca5e520a1d2257b850b12253e0252b3fb74bb79035ba9dfb95323dce557d                                                 0.0s
 => => naming to docker.io/library/cross-toolchain-arm64-mudelcontroller:latest                                                                        0.0s
 => => unpacking to docker.io/library/cross-toolchain-arm64-mudelcontroller:latest                                                                     0.0s
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: make ARCH=arm64 makedir 

 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: DOCKER_HOST= docker run --rm -v /home/sabrahamian/mudelcontroller:/home/torizon/mudelcontroller cross-toolchain-arm64-mudelcontroller make ARCH=arm64 CC=aarch64-linux-gnu-g++ debug 

make: Nothing to be done for 'debug'.
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: DOCKER_HOST= docker compose build --pull --build-arg SSHUSERNAME=torizon --build-arg APP_ROOT=/home/torizon/mudelcontroller --build-arg IMAGE_ARCH=arm64 --build-arg DEBUG_SSH_PORT=2230 --build-arg GPU=-am62 mudelcontroller-debug 

WARN[0000] The "DOCKER_LOGIN" variable is not set. Defaulting to a blank string. 
[+] Building 0.6s (13/13) FINISHED                                                                                                                          
 => [internal] load local bake definitions                                                                                                             0.0s
 => => reading from stdin 825B                                                                                                                         0.0s
 => [internal] load build definition from Dockerfile.debug                                                                                             0.0s
 => => transferring dockerfile: 2.73kB                                                                                                                 0.0s
 => [internal] load metadata for docker.io/torizon/debian:4                                                                                            0.2s
 => [auth] torizon/debian:pull token for registry-1.docker.io                                                                                          0.0s
 => [internal] load .dockerignore                                                                                                                      0.0s
 => => transferring context: 56B                                                                                                                       0.0s
 => [1/6] FROM docker.io/torizon/debian:4@sha256:7a12eafcb182aa064174442ffeaf1849d1b3d14ac51770fbac45190bd7a03813                                      0.0s
 => => resolve docker.io/torizon/debian:4@sha256:7a12eafcb182aa064174442ffeaf1849d1b3d14ac51770fbac45190bd7a03813                                      0.0s
 => CACHED [2/6] RUN apt-get -q -y update &&     apt-get -q -y install     openssl     openssh-server     rsync     file     curl     gdb &&     apt-  0.0s
 => CACHED [3/6] RUN apt-get -q -y update &&     apt-get -q -y install     libgpiod-dev:arm64     &&     apt-get clean && apt-get autoremove &&     r  0.0s
 => CACHED [4/6] RUN mkdir /var/run/sshd &&     sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g'         -i /etc/pam.d  0.0s
 => CACHED [5/6] RUN usermod -a -G gpio torizon                                                                                                        0.0s
 => CACHED [6/6] RUN rm -r /etc/ssh/ssh*key &&     dpkg-reconfigure openssh-server                                                                     0.0s
 => exporting to image                                                                                                                                 0.2s
 => => exporting layers                                                                                                                                0.0s
 => => exporting manifest sha256:d3aa913ab443c233bf1f834b61ba839b5ac18d2331b1a6dd39b515254ea640a3                                                      0.0s
 => => exporting config sha256:c2892b04222608abfa2ddbdabded5a3f19b802858d76ba73146b4507bdcd53ae                                                        0.0s
 => => exporting attestation manifest sha256:fbf35bffd4abfd71d948716016df59649c1500e1a3cf304944ba577e5ebdd6a3                                          0.1s
 => => exporting manifest list sha256:0c4af8bfabcb7fc420ed60dd197ff352883beba35479c226ce2cfafc44a30aac                                                 0.0s
 => => naming to localhost:5003/mudelcontroller-debug:arm64                                                                                            0.0s
 => => unpacking to localhost:5003/mudelcontroller-debug:arm64                                                                                         0.0s
 => resolving provenance for metadata file                                                                                                             0.0s
[+] build 1/1
 ✔ Image localhost:5003/mudelcontroller-debug:arm64 Built                                                                                               0.7s
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: DOCKER_HOST= docker compose push mudelcontroller-debug 

WARN[0000] The "DOCKER_LOGIN" variable is not set. Defaulting to a blank string. 
[+] push 18/18
 ✔ localhost:5003/mudelcontroller-debug:arm64 Pushed                                                                                                    0.2s
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: /home/sabrahamian/.local/bin/xonsh /home/sabrahamian/mudelcontroller/.conf/spin-up-down-registry.xsh down torizon torizon 10.85.76.239 /home/sabrahamian/mudelcontroller 

/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)
torizon-ide-port-tunnel-8a1c9089
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: /home/sabrahamian/.local/bin/xonsh /home/sabrahamian/mudelcontroller/.conf/spin-up-down-registry.xsh up torizon torizon 10.85.76.239 /home/sabrahamian/mudelcontroller 

/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)
/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)
Container Runtime: docker
Run Arguments: --rm -d --network host -e SSHPASS torizonextras/ide-port-tunnel:0.0.0 sshpass -e ssh -vv -N -R 5003:localhost:5003 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PubkeyAuthentication=no torizon@10.85.76.239
Container Name: torizon-ide-port-tunnel-8a1c9089
Container does not exist. Starting ...
Cmd: docker run --name torizon-ide-port-tunnel-8a1c9089 --rm -d --network host -e SSHPASS torizonextras/ide-port-tunnel:0.0.0 sshpass -e ssh -vv -N -R 5003:localhost:5003 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PubkeyAuthentication=no torizon@10.85.76.239
d09bd2c8590bed5c92078dd56a5824af904ed4bbfc5998a2483ca9242f8fd434
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: xonsh /home/sabrahamian/mudelcontroller/.conf/service-check.xsh registry torizon 22 torizon 10.85.76.239 'curl --silent --max-time 5 http://localhost:5003/v2/_catalog' 

/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2816: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(key, val)
/home/sabrahamian/.local/pipx/venvs/xonsh/lib/python3.11/site-packages/xonsh/environ.py:2760: DeprecationWarning: env: Setting deprecated env variable 'RAISE_SUBPROC_ERROR'. Replace it to 'XONSH_SUBPROC_CMD_RAISE_ERROR'.
  self._set_item(k, v, thread_local=True)
Registry ready
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: sleep 1 && DOCKER_HOST=10.85.76.239:2375 docker pull localhost:5003/mudelcontroller-debug:arm64 

arm64: Pulling from mudelcontroller-debug
no matching manifest for linux/arm64/v8 in the manifest list entries

 *  The terminal process "/usr/bin/bash '-c', 'sleep 1 && DOCKER_HOST=10.85.76.239:2375 docker pull localhost:5003/mudelcontroller-debug:arm64'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

I did run the following command to ensure ARM emulation.

docker run --rm -it --privileged torizon/binfmt

I did not see a response to this command.

I checked for ARM64v8 support with the following command.

docker run --rm -it --pull always --platform linux/arm64/v8 debian arch

I received this response:

latest: Pulling from library/debian
c8a311258fd1: Pull complete
fbb367265425: Download complete
Digest: sha256:d07d1b51c39f51188e60be9b64e6bf769fa94e187f092bc32b91305cfa34ba5a
Status: Downloaded newer image for debian:latest
aarch64

Results of tdx-info:

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.119-7.5.0-gf1f810e373a1 #1-Torizon SMP PREEMPT Fri
 Dec 12 14:50:07 UTC 2025
Kernel command line:      root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo v
t.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ost
ree=/ostree/boot.1/torizon/e76a56a5773fe116fb14057ad60f27ff78d4262fc1f5af17ed330
042685004bc/0
Distro name:              NAME="Torizon OS"
Distro version:           VERSION_ID=7.5.0-build.30
Distro variant:           VARIANT="Docker"
Hostname:                 verdin-am62-15600960
------------------------------------------------------------

Hardware info
------------------------------------------------------------
HW model:                 Toradex Verdin AM62 on Verdin Development Board
Toradex version:          0074 V1.2A
Serial number:            15600960
Processor arch:           aarch64
------------------------------------------------------------

What am I missing?

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


Based on your logs, the ARM emulation is correctly configured (as confirmed by the aarch64 output), but the issue appears during the Docker pull operation from the local registry on your target device(1).

This specific error has been encountered by other users and was resolved by adjusting Docker Desktop settings(1). In Docker Desktop under General settings, there’s a checkbox labeled “Use containerd for pulling and storing images”(1). When this option is enabled, it can cause the “no matching manifest for linux/arm64/v8” error(1).

Solution

Uncheck the “Use containerd for pulling and storing images” option in Docker Desktop’s General settings(1).

Additional Verification

Since you’re using WSL2, confirm that you have Docker Engine installed within WSL2 rather than relying solely on Docker Desktop(2). The recommended setup is:

  1. Install Docker Engine in WSL2 following the instructions for your specific Linux distribution(2)
  2. Set up Docker to run without root privileges(2)

After making these changes, re-enable ARM emulation with:

docker run --rm -it --privileged torizon/binfmt

(2)

Then retry your debug workflow.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@ToradexAI I am not using Docker Desktop. Where do I find docker configuration settings?

Since you’re using Docker Engine in WSL2 (not Docker Desktop), the configuration is managed through the Docker daemon configuration file(1).

Docker Engine Configuration Location

The Docker daemon configuration file is typically located at:

/etc/docker/daemon.json

(1)

Verify Your Docker Storage Driver

First, check your current Docker configuration by running:

docker info | grep Storage

(1)

You should see overlay2 as the storage driver(1). If you see something different, you may need to configure it.

Troubleshooting Steps

Based on your error and setup, here are the recommended steps:

  1. Verify Docker Engine Installation: Ensure Docker Engine is properly installed in WSL2 and configured to run without root privileges(2)(3)

  2. Check Docker Service Status: In your WSL2 terminal, verify Docker is running:

    sudo service docker status
    
  3. Restart Docker Service: Sometimes a restart resolves manifest issues:

    sudo service docker restart
    
  4. Re-enable ARM Emulation: After restarting Docker, re-enable ARM emulation:

    docker run --rm -it --privileged torizon/binfmt
    

    (2)

  5. Verify Project Location: Ensure your project is located in the WSL2 Linux filesystem (e.g., /home/sabrahamian/mudelcontroller), not in the Windows filesystem mounted under /mnt/c/(1)

  6. Check Available Disk Space: Run df -h to ensure you have sufficient disk space(1)

Additional Considerations

The error occurs during the pull operation from the local registry (localhost:5003) to your Verdin AM62 device. This suggests the issue might be related to:

  • Network connectivity between your PC and the Verdin board(4)
  • Port accessibility (ensure port 5003 is accessible)(4)
  • The local registry configuration on your development PC(4)

If the issue persists after these steps, please share the output of docker info and confirm your project directory path.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@ToradexAI

My docker daemon config file only has one line about insecure registries.

daemon.json (86 Bytes)

The results of the docker info command:

Client: Docker Engine - Community
 Version:    29.5.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.34.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.1.4
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 6
 Server Version: 29.5.2
 Storage Driver: overlayfs
  driver-type: io.containerd.snapshotter.v1
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 193637f7ee8ae5f5aa5248f49e7baa3e6164966e
 runc version: v1.3.5-0-g488fc13e
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.18.33.1-microsoft-standard-WSL2
 Operating System: Torizon Development Environment for WSL 2
 OSType: linux
 Architecture: x86_64
 CPUs: 28
 Total Memory: 6.596GiB
 Name: MU69-PC
 ID: 9f05f767-c377-43c0-aada-1b4da9bbc500
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: sabrahamian
 Experimental: false
 Insecure Registries:
  10.85.76.208:5003
  127.0.0.1:5003
  localhost:5003
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false
 Firewall Backend: iptables
  EnableUserlandProxy: true
  UserlandProxyPath: /bin/docker-proxy

WARNING: No swap limit support

I checked the docker service status and docker is running. I ran the docker service restart command and got the following response:

Stopping Docker: docker.
Starting Docker: docker.

I re-enabled arm emulation.

Project location is at the following location:

🐧 sabrahamian @MU69-PC~/mudelcontroller: pwd
/home/sabrahamian/mudelcontroller

I checked the disk space on my AM62, and got this reponse:

torizon@verdin-am62-15600960:~$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
tmpfs                       432M  9.9M  422M   3% /run
devtmpfs                    320M     0  320M   0% /dev
/dev/disk/by-label/otaroot  7.1G  943M  5.8G  14% /sysroot
tmpfs                       432M     0  432M   0% /dev/shm
tmpfs                       432M   12K  432M   1% /tmp
tmpfs                       432M  4.0K  432M   1% /var/volatile
tmpfs                        87M  4.0K   87M   1% /run/user/1000

Based on your docker info output, I’ve identified the issue. Your Docker installation is using Docker 29 with the containerd snapshotter storage driver (overlayfs with driver-type: io.containerd.snapshotter.v1), which is known to cause manifest compatibility issues with the Torizon IDE Extension(1).

The Problem

Docker 29 introduced changes to how it handles multi-platform manifests, which causes the “no matching manifest for linux/arm64/v8” error when pulling images from the local registry(1).

Solution

You have two options:

Option 1: Update to Torizon IDE Extension Pre-Release (Recommended)

Torizon IDE Extension Version 3.3.114 (pre-release) fixes this Docker 29 incompatibility(1). To update:

  1. Open VS Code
  2. Go to the Extensions view
  3. Find “Torizon IDE Extension”
  4. Switch to the Pre-Release version

Option 2: Downgrade Docker to Version 28.x

If you cannot use the Pre-Release extension, downgrade your Docker installation to version 28.x(1):

  1. Uninstall Docker 29:
sudo apt-get remove docker-ce docker-ce-cli containerd.io
  1. Install Docker 28.x following the [Docker Engine installation instructions for your WSL2 distribution](2)

  2. After installation, configure Docker to run without root privileges(2)

  3. Re-enable ARM emulation:

docker run --rm -it --privileged torizon/binfmt

(2)

Additional Notes

Your configuration otherwise looks correct:

  • Project location is in the WSL2 filesystem ✓
  • Docker service is running ✓
  • Insecure registries are configured ✓
  • ARM emulation test passed ✓
  • Sufficient disk space on both PC and target ✓

The issue is specifically the Docker 29 + containerd snapshotter combination causing manifest parsing problems during the registry pull operation.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@ToradexAI The Torizon IDE Extension is at version 3.6.0 now. Is the current version of the IDE compatible with Docker 29?

According to the Torizon IDE Extension troubleshooting documentation, Torizon IDE Extension Version 3.3.114 (pre-release) fixes the Docker 29 incompatibility issue(1).

However, you’re using version 3.6.0, which is newer than 3.3.114. Since version 3.6.0 is a later release that came after the pre-release version 3.3.114, it should include the Docker 29 compatibility fix(1).

Possible Causes for Your Issue

Even with the updated extension, the manifest error you’re experiencing could be caused by:

  1. Cached Docker state - The Docker daemon or local registry may have cached incompatible manifests from before the extension update
  2. Registry synchronization - The local registry tunnel may need to be reset

Recommended Steps

Try these steps to resolve the issue:

  1. Clean Docker cache and restart:
docker system prune -a
sudo service docker restart
  1. Re-enable ARM emulation:
docker run --rm -it --privileged torizon/binfmt

(1)

  1. Remove and rebuild your project containers:
# In your project directory
docker compose down
docker compose build --no-cache
  1. Verify the extension is using the correct registry configuration - Check your VS Code settings for any overrides related to torizon.overwriteHostIp(1)

  2. Check network connectivity between your WSL2 environment and the Verdin AM62 board, ensuring ports 22, 2375, 5003, and 2230 are accessible(1)

If the issue persists after these steps, please share the output of your next deployment attempt so we can investigate further.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@ToradexAI I’m seeing something strange that I do not understand.

I ran the WSL.exe from my windows start menu. I entered the command docker info into the command prompt and got this response.

🐧 sabrahamian @MU69-PC~/mudelcontroller: docker info
Client: Docker Engine - Community
 Version:    29.5.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.34.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.1.4
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 5
 Server Version: 29.5.2
 Storage Driver: overlayfs
  driver-type: io.containerd.snapshotter.v1
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 193637f7ee8ae5f5aa5248f49e7baa3e6164966e
 runc version: v1.3.5-0-g488fc13e
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.18.33.1-microsoft-standard-WSL2
 Operating System: Torizon Development Environment for WSL 2
 OSType: linux
 Architecture: x86_64
 CPUs: 28
 Total Memory: 6.596GiB
 Name: MU69-PC
 ID: 9f05f767-c377-43c0-aada-1b4da9bbc500
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: sabrahamian
 Experimental: false
 Insecure Registries:
  10.85.76.208:5003
  127.0.0.1:5003
  localhost:5003
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false
 Firewall Backend: iptables
  EnableUserlandProxy: true
  UserlandProxyPath: /bin/docker-proxy

WARNING: No swap limit support

However, when I run the docker info command from the terminal within VSCode, I get a different response.

🐧 sabrahamian @MU69-PC~/mudelcontroller: docker info
Client: Docker Engine - Community
 Version:    29.5.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.34.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.1.4
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 25.0.3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 4ac6c20c7bbf8177f29e46bbdc658fec02ffb8ad.m
 runc version: v1.1.14-0-g2c9f5602-dirty
 init version: b9f42a0-dirty
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.6.119-7.5.0-gf1f810e373a1
 Operating System: Torizon OS 7.5.0+build.30 (scarthgap)
 OSType: linux
 Architecture: aarch64
 CPUs: 2
 Total Memory: 862.3MiB
 Name: verdin-am62-15600960
 ID: 438ba809-e4d7-4b6c-85c4-233b75132770
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: sabrahamian
 Experimental: false
 Insecure Registries:
  10.85.76.138:5002
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: API is accessible on http://0.0.0.0:2375 without encryption.
         Access to the remote API is equivalent to root access on the host. Refer
         to the 'Docker daemon attack surface' section in the documentation for
         more information: https://docs.docker.com/go/attack-surface/

How do you explain the different responses?

This explains your "no matching manifest" error perfectly! The VS Code terminal has the DOCKER_HOST environment variable set, which redirects Docker commands to your Verdin AM62 target device instead of your local WSL2 Docker installation(1).

What Is Happening

Looking at your two docker info outputs:

WSL Terminal (Direct):

  • Architecture: x86_64
  • Storage Driver: overlayfs (containerd snapshotter)
  • Docker Version: 29.5.2
  • Operating System: Torizon Development Environment for WSL 2

VS Code Terminal:

  • Architecture: aarch64
  • Storage Driver: overlay2
  • Docker Version: 25.0.3
  • Operating System: Torizon OS 7.5.0+build.30
  • Name: verdin-am62-15600960

The VS Code terminal is connecting to Docker on your Verdin AM62 device (IP: 10.85.76.239), not your local WSL2 Docker(1).

The Root Cause

The Torizon IDE Extension sets the DOCKER_HOST environment variable to enable remote Docker operations on the target device(1). This is why when the extension tries to pull localhost:5003/mudelcontroller-debug:arm64, it's actually executing that command on the Verdin AM62, which is running Docker 25.0.3 with the older overlay2 storage driver.

The manifest error occurs because:

  1. The image was built on your WSL2 machine with Docker 29 using the containerd snapshotter
  2. The image was pushed to your local registry (localhost:5003) on WSL2
  3. The Verdin AM62 tries to pull from that registry but encounters a manifest format it doesn't understand

Solution

To verify this is the issue, check the DOCKER_HOST variable in your VS Code terminal:

echo $DOCKER_HOST

You'll likely see it set to 10.85.76.239:2375 (your Verdin AM62's Docker API endpoint)(1).

The issue is that Docker 29 on your WSL2 system is creating manifests incompatible with Docker 25 on your target device. Since Torizon IDE Extension 3.6.0 should handle Docker 29, but your target is running Docker 25, there's a version mismatch in the deployment chain.

Recommended fix: Downgrade Docker on your WSL2 system to version 28.x to ensure compatibility with the Docker version on your Verdin AM62(2):

  1. Uninstall Docker 29:
sudo apt-get remove docker-ce docker-ce-cli containerd.io
  1. Install Docker 28.x following the Docker Engine installation instructions for your WSL2 distribution(3)
  2. Configure Docker to run without root privileges(3)
  3. Re-enable ARM emulation:
docker run --rm -it --privileged torizon/binfmt

(3)

This will ensure manifest compatibility between your development environment and target device.

Best regards,
Toradex AI Assistant.



Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@ToradexAI I downgraded to Docker V28.5.2 and was able to debug my project.

Are we limited to Docker V28.x for the time being? Will there be any updates on Toradex’s side to deal with the most recent version of Docker?

Excellent news that downgrading to Docker 28.5.2 resolved your issue!

Current Docker Compatibility Status

According to the Torizon IDE Extension troubleshooting documentation, Torizon IDE Extension Version 3.3.114 (pre-release) fixes the Docker 29 incompatibility issue(1). Since you’re using version 3.6.0 (which is newer), the extension itself should support Docker 29(1).

However, the core issue you encountered is a version mismatch between your development environment and the target device:

  • Your WSL2 environment: Was running Docker 29.5.2
  • Your Verdin AM62 target: Running Docker 25.0.3 (as shown in your docker info output)

Why Docker 28.x Works

Docker 28.x creates manifests that are compatible with both newer and older Docker versions, including the Docker 25.0.3 running on your Verdin AM62 device running Torizon OS 7.5.0(1).

Long-Term Solution

The limitation is not strictly on the Torizon IDE Extension side (which supports Docker 29), but rather on the target device side. Your Verdin AM62 is running Torizon OS 7.5.0 with Docker 25.0.3, which predates the manifest format changes introduced in Docker 29.

For full Docker 29 compatibility across your entire workflow, you would need:

  1. Updated Torizon OS image on your target device with a newer Docker version
  2. Torizon IDE Extension 3.3.114+ (you already have 3.6.0) ✓

Recommended Approach

For now, staying with Docker 28.x on your development machine is the recommended approach(1). This ensures:

  • Compatibility with current Torizon OS releases
  • Stable development workflow
  • No manifest compatibility issues

Toradex regularly updates Torizon OS releases. Future Torizon OS versions will include updated Docker versions that fully support Docker 29+ manifest formats. You can monitor Toradex release notes for updates.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Greetings @SAbrahamian,

Be aware we have this issue with Docker version 29 documented here: Troubleshooting | Toradex Developer Center

This issue should already be fixed in recent versions of our extension. However, it’s likely the case that your project was generated with an older version of the extension from before it was fixed.

For those that already created a project prior to this update, you need to run the try-update-template task in the extension and accept these changes in the docker-compose.yml files:

platforms: - linux/${IMAGE_ARCH}

Alternatively you can create a new project, and copy your code over.

Best Regards,
Jeremias