I have successfully setup remote access to my Windows 10 machine running openSSH Server (using public key authentication). I am also running Docker Desktop on my Windows machine.
I would like to access the docker daemon and containers on the windows machine from my Macbook M1 (so I can control applications running in a container on the windows machine and develop scripts for that application).
I basically got the idea from this article
I can successfully connect with ssh to the Windows machine (the openSSH server is installed on WSL 2 and not inside a linux distro):
My daemon.json on Windows:
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
},
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
},
"hosts": ["tcp://0.0.0.0:2375", "ssh://0.0.0.0:2376"],
"group": "docker"
}
On the Macbook I have installed docker file and set DOCKER_HOST:
echo "export DOCKER_HOST=ssh://phili@192.168.0.11:22" >> ~/.zshrc && source ~/.zshrc
I also tried using contexts as described in this MS article
I can then run docker commands on my Macbook and see the remote docker host and the running containers:
phil@Phil-MacBook:~ > docker version
Client:
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:52:10 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
phil@Phil-MacBook:Docker > docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6449bc460e6b humble_bumble "jupyter notebook --…" 5 days ago Up 5 seconds 0.0.0.0:2375->2375/tcp, :::2375->2375/tcp, 8888/tcp priceless_mahavira
153b9fcb70a9 vsc-docker-0f0a12d517505d0b19ef9dcb95ae109f "jupyter notebook --…" 6 days ago Up 12 hours 8888/tcp gracious_nash
I created a .devcontainer containing dockerfile and devcontainer.json:
{
"name": "DEV ENV",
"dockerFile": "dockerfile",
"runArgs": ["--init"],
"mounts": [ "source=/var/run/docker.sock,target=/var/run/docker-host.sock,type=bind" ],
"overrideCommand": false,
// Use this environment variable if you need to bind mount your local source code into a new container.
"remoteEnv": {
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
},
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-azuretools.vscode-docker",
"kelvin.vscode-sshfs",
"ms-python.python",
"ms-toolsai.jupyter"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [80,8080,5000,8888,2375]
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "docker --version",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
//"remoteUser": "vscode"
}
In VS Code (most current release) on Macbook M1 I installed Remote Containers and also get the running dockers listed:
However, when I try to open folder in container, it does some things successfully but then the following error aborts the process:
[2021-10-07T15:11:01.391Z] failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: rpc error: code = Unknown desc = failed to process "\"dev": unexpected end of statement while looking for matching double-quote
[2021-10-07T15:11:01.394Z] Stop (6252 ms): Run: docker build -f /Users/phil/docker/.devcointainer/dockerfile -t vsc-devcointainer-b8e915c60b425e8ebf3b4086823c8d79 /Users/phil/docker/.devcointainer
[2021-10-07T15:11:01.399Z] Command failed: docker build -f /Users/phil/docker/.devcointainer/dockerfile -t vsc-devcointainer-b8e915c60b425e8ebf3b4086823c8d79 /Users/phil/docker/.devcointainer
When I try Attach to running container:
[6588 ms] Start: Preparing Extensions
[6589 ms] Start: Run in container: test ! -f '/home/devuser/.vscode-server/data/Machine/.installExtensionsMarker' && set -o noclobber && mkdir -p '/home/devuser/.vscode-server/data/Machine' && { > '/home/devuser/.vscode-server/data/Machine/.installExtensionsMarker' ; } 2> /dev/null
[6593 ms] Error: stream ended with:297 but wanted:1128865906
at u (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:7:60200)
at /Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:7:60381
at s (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:12:5296)
at Socket.<anonymous> (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:12:5466)
at Socket.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
[6594 ms] Remote-Containers server terminated (code: 126, signal: null).
[6597 ms]
[6597 ms]
[6597 ms] Exit code 1
[6599 ms] Extensions cache, install extensions: None
[6599 ms] Start: Run in container: test -d /home/devuser/.vscode-server/extensionsCache && ls /home/devuser/.vscode-server/extensionsCache || true
[6605 ms] kelvin.vscode-sshfs-1.23.0
ms-azuretools.vscode-docker-1.17.0
ms-python.python-2021.9.1246542782
ms-python.vscode-pylance-2021.9.4
ms-toolsai.jupyter-2021.8.2041215044
ms-toolsai.jupyter-keymap-1.0.0
[6606 ms]
[6606 ms] Extensions cache, copy to remote: None
[6607 ms] Start: Run in container: for pid in `cd /proc && ls -d [0-9]*`; do { echo $pid ; readlink /proc/$pid/cwd ; readlink /proc/$pid/ns/mnt ; cat /proc/$pid/stat | tr "
[6641 ms] Start: Starting VS Code Server
[6642 ms] Start: Run in container: /home/devuser/.vscode-server/bin/7f6ab5485bbc008386c4386d08766667e155244e/server.sh --log debug --force-disable-user-env --port 0 --extensions-download-dir /home/devuser/.vscode-server/extensionsCache --start-server
[6645 ms] Error: stream is closed
at /Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:12:3742
at i (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:12:1874)
at EventEmitter.t.<computed> [as exec] (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:12:1636)
at u (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:128:1024)
at new Promise (<anonymous>)
at /Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:128:1002
at Ln (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:171:1779)
at JB (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:171:541)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Ci (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:143:7538)
at async pF (/Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:284:1663)
at async /Users/phil/.vscode/extensions/ms-vscode-remote.remote-containers-0.194.3/dist/extension/extension.js:314:1497
[16614 ms] Extensions cache, remote removals: None
I feel I am close to success since I can see the containers in VS Code, but obviously I am missing something. Could it have to do with different architectures (Macbook M1 is ARM and Windows is x86)?
