devcontainers / devcontainers/cli

mac M2 cannot open devcontainer with runArgs arch=amd64

Abierto
#711 3 comentarios 0 reacciones 1 asignado Reclamado por @chrmarti Ver en GitHub
info-needed
Lenguaje dominante
TypeScript
Estrellas
3k
Forks
457
Merge medio
13 h 17 min
PR fusionados (30 d)
6

Descripción

Shortly speaking I need a devcontainer running `linux/amd64` type of image. Below is my `devcontainer.json`:
```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

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. (/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: , includes: , correlationId: ),/home/core/.vscode-server/data/Machine/settings.json (excludes: , includes: , correlationId: )
[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: , includes: , correlationId: )
[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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.