loft-sh / devpod

Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just localhost docker.
https://devpod.sh
Mozilla Public License 2.0
8.64k stars 318 forks source link

rancher desktop / nerdctl/containerd #340

Closed codeagencybe closed 4 months ago

codeagencybe commented 1 year ago

Is your feature request related to a problem? Use with Rancher Desktop and containerd+nerdctl

Which solution do you suggest? How to use DevPod with nerdctl instead of Docker?

Which alternative solutions exist? /

Additional context I'm not using Docker but alternative Rancher Desktop on MacOS which comes with containerd and nerdctl default. I already replaced all "Docker" commands to Nerdctl (eg Docker run .... -> Nerdctl run ... or Docker compose -> Nerdctl compose ...) via my zshrc shell as custom aliases but this also doesn't work for DevPod.

Any documentation how I can do this?

ThomasK33 commented 1 year ago

Hey @codeagencybe 👋, thanks for opening this issue.

Currently, the shell commands invoked by devpod run in non-interactive shells; thus, any aliases configured will not be set. Also, as devpod invokes either a bash or sh, depending on availability, you'd have to configure aliases in the respective .bashrc or .profile files.

I've opened a PR to start shells as interactive so that those aliases will be used in the future. For now, you could symlink docker to nerdctl in a directory somewhere in your $PATH.

ThomasK33 commented 1 year ago

Quick heads up, since this issue was automatically closed with the PR: DevPod will start interactive shells starting with the next release so that one's aliases will be set and used. Drop-in replacements and aliases should be possible.

In the future, we'll also look into detecting the user's default shell and execute commands using that in interactive mode, but... that's another issue ^^.

ThomasK33 commented 1 year ago

Hey @codeagencybe, could you please try the 0.16.0 release and set your docker aliases in a .bashrc file?

ThomasK33 commented 1 year ago

And we had to revert this PR due to issues with interactive shells and suspensions.

We will have to find another way to source aliases.

codingbutstillalive commented 1 year ago

Does it work with Rancher Desktop at all? I think by default it is using the normal docker deamon, doesn't it?

codeagencybe commented 1 year ago

I gave up on Rancher Desktop with DevPod, just impossible to get it working. I reverted to Docker Desktop for the time being but now having other errors happening as mentioned in #355

codingbutstillalive commented 1 year ago

Thank you very much.

Fabio Tielen @.***> schrieb am Di. 30. Mai 2023 um 08:45:

I gave up on Rancher Desktop with DevPod, just impossible to get it working. I reverted to Docker Desktop for the time being but now having other errors happening as mentioned in #355 https://github.com/loft-sh/devpod/issues/355

— Reply to this email directly, view it on GitHub https://github.com/loft-sh/devpod/issues/340#issuecomment-1567857021, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACM6OHAEDIT5XBYL34OJZIDXIWJPBANCNFSM6AAAAAAYNDGLCM . You are receiving this because you commented.Message ID: @.***>

joebowbeer commented 1 year ago

Fixed?

chawyehsu commented 1 year ago

Purely using nerdctl as docker command just does not work. --sig-proxy is not yet implemented in nerdctl.

Might related https://github.com/containerd/nerdctl/issues/392

[20:52:02] debug Workspace Folder already exists
[20:52:02] debug Using docker command 'nerdctl'
[20:52:06] debug Running docker command: nerdctl run --sig-proxy=false --mount type=bind,source=<redacted...>
trap "exit 0" 15

exec "$@"
while sleep 1 & wait $!; do :; done -
[20:52:06] info 2023/07/12 20:52:06 Error parsing arguments: command "container run" does not support option --sig-proxy=false
[20:52:06] info time="2023-07-12T12:52:06Z" level=fatal msg="unknown flag: --sig-proxy"
...
FabianKramm commented 1 year ago

@chawyehsu yeah since we mostly reused existing devcontainers code for devpod, this causes issues, we could remove this within devpod, but not sure if that would have other sideeffects and fix the problem completely.

joebowbeer commented 8 months ago

@codingbutstillalive asks:

Does it work with Rancher Desktop at all? I think by default it is using the normal docker deamon, doesn't it?

I expect Rancher Desktop w/dockerd to work because Rancher Desktop works with vscode devcontainers:

https://github.com/rancher-sandbox/rancher-desktop/issues/800

pascalbreuninger commented 4 months ago

DevPod should be compatible with nerdctl and containerd after we merge #1011. We consider this as an experimental feature, use at your own risk 😅