Skip to content

mac M2 cannot open devcontainer with runArgs arch=amd64 #711

Open
@filip-komarzyniec

Description

@filip-komarzyniec

Shortly speaking I need a devcontainer running linux/amd64 type of image. Below is my devcontainer.json:

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
	"name": "Python 3",
	"build": {
		"dockerfile": "Dockerfile",
		"context": "."
	},

	"runArgs": [
		"--userns=keep-id",
		"--arch=amd64",
	],
	"containerEnv": {
		"HOME": "/home/core"
	},
	"remoteUser": "core",
	"workspaceMount": "source=${localWorkspaceFolder}/,destination=/home/core/,type=bind,consistency=cached",
	"workspaceFolder": "/home/core/",
}

The Dockerfile:

FROM --platform=linux/amd64 python:3.10.13-slim-bullseye

I am running Podman on a Mac M2 13.5:

macbook-pro:~ filip.komarzyniec$ podman info
host:
  arch: arm64
  buildahVersion: 1.32.0
  cgroupControllers:
  - cpu
  - io
  - memory
  - pids
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: conmon-2.1.8-2.fc39.aarch64
    path: /usr/bin/conmon
    version: 'conmon version 2.1.8, commit: '
  cpuUtilization:
    idlePercent: 98.35
    systemPercent: 0.34
    userPercent: 1.31
  cpus: 6
  databaseBackend: boltdb
  distribution:
    distribution: fedora
    variant: coreos
    version: "39"
  eventLogger: journald
  freeLocks: 2044
  hostname: localhost.localdomain
  idMappings:
    gidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 1000000
    uidmap:
    - container_id: 0
      host_id: 501
      size: 1
    - container_id: 1
      host_id: 100000
      size: 1000000
  kernel: 6.6.3-200.fc39.aarch64
  linkmode: dynamic
  logDriver: journald
  memFree: 983437312
  memTotal: 1979224064
  networkBackend: netavark
  networkBackendInfo:
    backend: netavark
    dns:
      package: aardvark-dns-1.8.0-1.fc39.aarch64
      path: /usr/libexec/podman/aardvark-dns
      version: aardvark-dns 1.8.0
    package: netavark-1.8.0-2.fc39.aarch64
    path: /usr/libexec/podman/netavark
    version: netavark 1.8.0
  ociRuntime:
    name: crun
    package: crun-1.12-1.fc39.aarch64
    path: /usr/bin/crun
    version: |-
      crun version 1.12
      commit: ce429cb2e277d001c2179df1ac66a470f00802ae
      rundir: /run/user/501/crun
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +LIBKRUN +WASM:wasmedge +YAJL
  os: linux
  pasta:
    executable: /usr/bin/pasta
    package: passt-0^20231119.g4f1709d-1.fc39.aarch64
    version: |
      pasta 0^20231119.g4f1709d-1.fc39.aarch64-pasta
      Copyright Red Hat
      GNU General Public License, version 2 or later
        <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
  remoteSocket:
    exists: true
    path: /run/user/501/podman/podman.sock
  security:
    apparmorEnabled: false
    capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
    rootless: true
    seccompEnabled: true
    seccompProfilePath: /usr/share/containers/seccomp.json
    selinuxEnabled: true
  serviceIsRemote: true
  slirp4netns:
    executable: /usr/bin/slirp4netns
    package: slirp4netns-1.2.2-1.fc39.aarch64
    version: |-
      slirp4netns version 1.2.2
      commit: 0ee2d87523e906518d34a6b423271e4826f71faf
      libslirp: 4.7.0
      SLIRP_CONFIG_VERSION_MAX: 4
      libseccomp: 2.5.3
  swapFree: 0
  swapTotal: 0
  uptime: 1h 57m 57.00s (Approximately 0.04 days)
  variant: ""
plugins:
  authorization: null
  log:
  - k8s-file
  - none
  - passthrough
  - journald
  network:
  - bridge
  - macvlan
  - ipvlan
  volume:
  - local
registries:
  search:
  - docker.io
store:
  configFile: /var/home/core/.config/containers/storage.conf
  containerStore:
    number: 2
    paused: 0
    running: 1
    stopped: 1
  graphDriverName: overlay
  graphOptions: {}
  graphRoot: /var/home/core/.local/share/containers/storage
  graphRootAllocated: 106769133568
  graphRootUsed: 15790469120
  graphStatus:
    Backing Filesystem: xfs
    Native Overlay Diff: "true"
    Supports d_type: "true"
    Supports shifting: "false"
    Supports volatile: "true"
    Using metacopy: "false"
  imageCopyTmpDir: /var/tmp
  imageStore:
    number: 53
  runRoot: /run/user/501/containers
  transientStore: false
  volumePath: /var/home/core/.local/share/containers/storage/volumes
version:
  APIVersion: 4.7.2
  Built: 1698762633
  BuiltTime: Tue Oct 31 15:30:33 2023
  GitCommit: ""
  GoVersion: go1.21.1
  Os: linux
  OsArch: linux/arm64
  Version: 4.7.2

❗️Without arch=amd64 in runArgs section everything works fine. With it, though, it seems that something bad is happening with the port forwarding. I am attaching some parts of devcontainer logs (trimmed for visibility). I **turned on ** trace logging for that:

...
[2023-12-18T18:27:08.090Z] Stop (30 ms): Run in container: test -d /vscode/vscode-server/extensionsCache && ls /vscode/vscode-server/extensionsCache || true
[2023-12-18T18:27:08.090Z] Extensions cache, link in container: None
[2023-12-18T18:27:08.091Z] Optimizing extensions for quality: stable
[2023-12-18T18:27:08.091Z] Stop (87 ms): Preparing Extensions
[2023-12-18T18:27:08.091Z] Start: Run in container: /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/bin/code-server --log trace --force-disable-user-env --server-data-dir /home/core/.vscode-server --use-host-proxy --telemetry-level error --accept-server-license-terms --host 127.0.0.1 --port 0 --connection-token-file /home/core/.vscode-server/data/Machine/.connection-token-0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 --extensions-download-dir /home/core/.vscode-server/extensionsCache --start-server --disable-websocket-compression
[2023-12-18T18:27:08.435Z] Container server: Segmentation fault (core dumped)
[2023-12-18T18:27:08.466Z] Stop (1532 ms): Run in Container: /bin/sh -lic echo -n 519a5718-b238-4ba5-97ed-21cde2a48925; cat /proc/self/environ; echo -n 519a5718-b238-4ba5-97ed-21cde2a48925
[2023-12-18T18:27:08.470Z] Error reading shell environment.
[2023-12-18T18:27:08.470Z] Error: stream ended with:9 but wanted:36
	at l (/Users/filip.komarzyniec/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/extension/extension.js:27:22149)
	at /Users/filip.komarzyniec/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/extension/extension.js:27:22330
	at s (/Users/filip.komarzyniec/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/extension/extension.js:30:5371)
	at Socket.<anonymous> (/Users/filip.komarzyniec/.vscode/extensions/ms-vscode-remote.remote-containers-0.327.0/dist/extension/extension.js:30:5541)
	at Socket.emit (node:events:525:35)
	at endReadableNT (node:internal/streams/readable:1359:12)
	at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
[2023-12-18T18:27:08.470Z] Start: Run in container: mkdir -p '/tmp/devcontainers-efce394e-6166-4d17-9e66-92e51c9c9a761702924017405' && cat > '/tmp/devcontainers-efce394e-6166-4d17-9e66-92e51c9c9a761702924017405/env-loginInteractiveShell.json' << 'envJSON'
[2023-12-18T18:27:08.470Z] Stop (1796 ms): Run in container: /bin/sh
[2023-12-18T18:27:08.471Z] Container server terminated (code: 139, signal: null).
[2023-12-18T18:27:08.515Z] 
[2023-12-18T18:27:08.515Z] 
[2023-12-18T18:27:08.515Z] Stop (45 ms): Run in container: mkdir -p '/tmp/devcontainers-efce394e-6166-4d17-9e66-92e51c9c9a761702924017405' && cat > '/tmp/devcontainers-efce394e-6166-4d17-9e66-92e51c9c9a761702924017405/env-loginInteractiveShell.json' << 'envJSON'
[2023-12-18T18:27:08.869Z] *
* Visual Studio Code Server
*
* By using the software, you agree to
* the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license) and
* the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement).
*
[2023-12-18T18:27:08.897Z] Server bound to 127.0.0.1:40737 (IPv4)
Extension host agent listening on 40737

[2023-12-18T18:27:08.898Z] Stop (894 ms): Starting VS Code Server
[2023-12-18T18:27:08.898Z] Start: Run in container: echo 40737 >'/home/core/.vscode-server/data/Machine/.devport-0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2'
[2023-12-18T18:27:08.908Z] 
[2023-12-18T18:27:08.909Z] 
[2023-12-18T18:27:08.909Z] Stop (11 ms): Run in container: echo 40737 >'/home/core/.vscode-server/data/Machine/.devport-0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2'
[2023-12-18T18:27:08.909Z] Port forwarding for container port 40737 starts listening on local port.
[2023-12-18T18:27:08.909Z] Port forwarding local port 40737 to container port 40737
[2023-12-18T18:27:08.910Z] Stop (11225 ms): Resolving Remote
[2023-12-18T18:27:08.911Z] Start: Run in container: # Test for /home/core/.gitconfig and git
[2023-12-18T18:27:08.915Z] Port forwarding connection from 49162 > 40737 > 40737 in the container.
[2023-12-18T18:27:08.916Z] Start: Run in container: /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/node -e 
[2023-12-18T18:27:08.917Z] git not found
[2023-12-18T18:27:08.917Z] 
[2023-12-18T18:27:08.917Z] Exit code 1
[2023-12-18T18:27:08.917Z] Stop (6 ms): Run in container: # Test for /home/core/.gitconfig and git
[2023-12-18T18:27:08.917Z] Start: Run in container: # Cleaning up git config
[2023-12-18T18:27:08.933Z] 
[2023-12-18T18:27:08.933Z] /bin/sh: 42: git: not found
/bin/sh: 42: git: not found
/bin/sh: 42: git: not found
/bin/sh: 47: git: not found
[2023-12-18T18:27:08.933Z] Stop (16 ms): Run in container: # Cleaning up git config
[2023-12-18T18:27:08.933Z] Start: Run in container: command -v git >/dev/null 2>&1 && git config --global --replace-all credential.helper '!f() { /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/node /tmp/vscode-remote-containers-eb00e657-2deb-401f-af6d-9aa4edb4e0ec.js git-credential-helper $*; }; f' || true
[2023-12-18T18:27:08.937Z] 
[2023-12-18T18:27:08.937Z] 
[2023-12-18T18:27:08.938Z] Stop (5 ms): Run in container: command -v git >/dev/null 2>&1 && git config --global --replace-all credential.helper '!f() { /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/node /tmp/vscode-remote-containers-eb00e657-2deb-401f-af6d-9aa4edb4e0ec.js git-credential-helper $*; }; f' || true
[2023-12-18T18:27:08.955Z] Port forwarding process for 49162 > 40737 > 40737 in the container:
[
  {
    "pid": 56449,
    "ppid": 56442,
    "uid": 501,
    "gid": 20,
    "name": "Visual Studio Code",
    "bin": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper",
    "cmd": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-GB --service-sandbox-type=network --user-data-dir=/Users/filip.komarzyniec/Library/Application Support/Code --standard-schemes=vscode-webview,vscode-file --enable-sandbox --secure-schemes=vscode-webview,vscode-file --bypasscsp-schemes --cors-schemes=vscode-webview,vscode-file --fetch-schemes=vscode-webview,vscode-file --service-worker-schemes=vscode-webview --streaming-schemes --shared-files --field-trial-handle=1718379636,r,16987151406262173952,15032054967134941976,262144 --disable-features=CalculateNativeWinOcclusion,SpareRendererForSitePerProcess --seatbelt-client=38"
  }
]
[2023-12-18T18:27:09.590Z] Port forwarding 49162 > 40737 > 40737 stderr: Connection established
[2023-12-18T18:27:09.979Z] [18:27:10] Remote configuration data at /home/core/.vscode-server
[2023-12-18T18:27:09.991Z] [18:27:10] process arguments: {
  _: [],
  host: '127.0.0.1',
  port: '0',
  'connection-token-file': '/home/core/.vscode-server/data/Machine/.connection-token-0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2',
  'without-connection-token': false,
  'disable-websocket-compression': true,
  'print-startup-performance': false,
  'print-ip-address': false,
  'accept-server-license-terms': true,
  'server-data-dir': '/home/core/.vscode-server',
  'telemetry-level': 'error',
  'enable-smoke-test-driver': false,
  'disable-telemetry': false,
  'disable-workspace-trust': false,
  log: [ 'trace' ],
  'force-disable-user-env': true,
  'enable-sync': false,
  'use-test-resolver': false,
  'extensions-download-dir': '/home/core/.vscode-server/extensionsCache',
  'list-extensions': false,
  'show-versions': false,
  force: false,
  'do-not-sync': false,
  'pre-release': false,
  'start-server': true,
  'enable-remote-auto-shutdown': false,
  'remote-auto-shutdown-without-delay': false,
  'use-host-proxy': true,
  'without-browser-env-var': false,
  help: false,
  version: false,
  'user-data-dir': '/home/core/.vscode-server/data',
  'builtin-extensions-dir': '/vscode/vscode-server/bin/linux-x64/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/extensions',
  'extensions-dir': '/home/core/.vscode-server/extensions',
  logsPath: '/home/core/.vscode-server/data/logs/20231218T182709'
}
[2023-12-18T18:27:09.992Z] [18:27:10] 




[2023-12-18T18:27:10.041Z] [18:27:10] [File Watcher (node.js)] Request to start watching: /home/core/.vscode-server/data/Machine (excludes: <none>, includes: <all>, correlationId: <none>),/home/core/.vscode-server/data/Machine/settings.json (excludes: <none>, includes: <all>, correlationId: <none>)
[2023-12-18T18:27:10.115Z] [18:27:10] ExtensionManagementService#cleanUp
[2023-12-18T18:27:10.116Z] [18:27:10] ExtensionManagementService#removeTempDeleteFolders
[2023-12-18T18:27:10.131Z] [18:27:10] Extension host agent started.
[2023-12-18T18:27:10.160Z] Port forwarding connection from 49165 > 40737 > 40737 in the container.
[2023-12-18T18:27:10.161Z] Start: Run in container: /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/node -e 
[2023-12-18T18:27:10.203Z] Port forwarding process for 49165 > 40737 > 40737 in the container:
[
  {
    "pid": 56449,
    "ppid": 56442,
    "uid": 501,
    "gid": 20,
    "name": "Visual Studio Code",
    "bin": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper",
    "cmd": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-GB --service-sandbox-type=network --user-data-dir=/Users/filip.komarzyniec/Library/Application Support/Code --standard-schemes=vscode-webview,vscode-file --enable-sandbox --secure-schemes=vscode-webview,vscode-file --bypasscsp-schemes --cors-schemes=vscode-webview,vscode-file --fetch-schemes=vscode-webview,vscode-file --service-worker-schemes=vscode-webview --streaming-schemes --shared-files --field-trial-handle=1718379636,r,16987151406262173952,15032054967134941976,262144 --disable-features=CalculateNativeWinOcclusion,SpareRendererForSitePerProcess --seatbelt-client=38"
  }
]
[2023-12-18T18:27:10.261Z] [18:27:10] Extension VSIX downloads cache dir does not exist
[2023-12-18T18:27:10.288Z] [18:27:10] [File Watcher (node.js)] Request to start watching: /home/core/.vscode-server/extensions (excludes: <none>, includes: <all>, correlationId: <none>)
[2023-12-18T18:27:10.322Z] [18:27:10] [127.0.0.1][73e23abf][ManagementConnection] New connection established.
[2023-12-18T18:27:10.366Z] [18:27:10] Started initializing default profile extensions in extensions installation folder. file:///home/core/.vscode-server/extensions
[2023-12-18T18:27:10.371Z] [18:27:10] Started scanning user extensions m {
  scheme: 'file',
  authority: '',
  path: '/home/core/.vscode-server/extensions',
  query: '',
  fragment: '',
  _formatted: 'file:///home/core/.vscode-server/extensions',
  _fsPath: '/home/core/.vscode-server/extensions'
}
[2023-12-18T18:27:10.378Z] [18:27:10] No uninstalled extensions found.
[2023-12-18T18:27:10.388Z] [18:27:10] [File Watcher (node.js)] Started watching: '/home/core/.vscode-server/data/Machine'
[2023-12-18T18:27:10.426Z] [18:27:10] [File Watcher (node.js)] Error: ENOENT: no such file or directory, stat '/home/core/.vscode-server/data/Machine/settings.json'
[2023-12-18T18:27:10.452Z] [18:27:10] Started scanning system extensions
[2023-12-18T18:27:10.456Z] [18:27:10] Started scanning user extensions m {
  scheme: 'file',
  authority: '',
  path: '/home/core/.vscode-server/extensions/extensions.json',
  query: '',
  fragment: '',
  _formatted: 'file:///home/core/.vscode-server/extensions/extensions.json',
  _fsPath: '/home/core/.vscode-server/extensions/extensions.json'
}
[2023-12-18T18:27:10.459Z] [18:27:10] ExtensionManagementService.refreshReportedCache
[2023-12-18T18:27:10.461Z] [18:27:10] resolveShellEnv(): skipped (--force-disable-user-env)
[2023-12-18T18:27:10.463Z] [18:27:10] Started scanning user extensions m {
  scheme: 'file',
  authority: '',
  path: '/home/core/.vscode-server/extensions/extensions.json',
  query: '',
  fragment: '',
  _formatted: 'file:///home/core/.vscode-server/extensions/extensions.json',
  _fsPath: '/home/core/.vscode-server/extensions/extensions.json'
}
[2023-12-18T18:27:10.466Z] [18:27:10] Log level changed to info
[2023-12-18T18:27:10.781Z] Port forwarding 49165 > 40737 > 40737 stderr: Connection established
[2023-12-18T18:27:11.253Z] [18:27:11] [127.0.0.1][80cadcab][ExtensionHostConnection] New connection established.
[2023-12-18T18:27:11.290Z] [18:27:11] [127.0.0.1][80cadcab][ExtensionHostConnection] <534> Launched Extension Host Process.
[2023-12-18T18:27:12.516Z] Stop (4425 ms): Run in container: /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/bin/code-server --log trace --force-disable-user-env --server-data-dir /home/core/.vscode-server --use-host-proxy --telemetry-level error --accept-server-license-terms --host 127.0.0.1 --port 0 --connection-token-file /home/core/.vscode-server/data/Machine/.connection-token-0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 --extensions-download-dir /home/core/.vscode-server/extensionsCache --start-server --disable-websocket-compression
[2023-12-18T18:27:12.517Z] Port forwarding 49165 > 40737 > 40737 stderr: Remote close
[2023-12-18T18:27:12.525Z] Port forwarding 49162 > 40737 > 40737 stderr: Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:217:20)
[2023-12-18T18:27:12.527Z] Port forwarding 49162 > 40737 > 40737 stderr: Remote close with error
[2023-12-18T18:27:12.552Z] Stop (3636 ms): Run in container: /home/core/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/node -e 
[2023-12-18T18:27:12.552Z] Port forwarding 49162 > 40737 > 40737 terminated with code 1 and signal null.
[2023-12-18T18:27:12.552Z] Port forwarding 49162 > 40737 > 40737: Local close
[2023-12-18T18:27:12.553Z] Start: Reconnection attempt 1
...

I am a bit stuck right now. I'll be happy to provide anything more that might prove useful.

❗️Running the arch=amd64 container out of vscode works as expected

Metadata

Metadata

Assignees

Labels

info-neededIssue requires more information from poster

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions