-
Notifications
You must be signed in to change notification settings - Fork 398
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't require the docker client to be present #163
Comments
Hey @Michael-F-Bryan, I'm open to the idea, but would not know how to implement that. I would be happy to review a PR for it though! |
rust-docker currently hasn't been maintained in over 7 years, and we support much more than just Docker now (including podman, and I've gotten Lima to work as well), and this still requires a docker daemon running. It uses the Not all container engines with a CLI API compatible with Docker will necessarily use a client/server architecture, and we'd have to listen on different endpoints. For example, podman by default doesn't use expose a socket for an HTTP API in rootless mode, although it can if enabled. For example, we'd need to probe the following locations, and support an entirely different API:
$ curl --unix-socket /run/user/1000/podman/podman.sock http://localhost/v1.41/images/json We'd also need to support the following tools:
A lot of this is due to remote Docker support. I'm not entirely sure if that's worth it. We may be able to support this if Probably the best solution now would be to use bollard, but because this has numerous dependencies with major compile-time overhead, it would require feature-gating it. We'd also need to make sure this other code-path does not go out-of-sync with our default code. If anyone wants to contribute, that would be great, but it would need:
Other downsides include that it would not work with lima (except when emulating docker/podman) and likely other container engines. |
This might still be possible, we just need to add on the following requirements:
Would require The steps required would be as follows:
Then, when implementing
This is doable, and maybe less work than initially imagined. |
I'm trying to use
cross
in my CI jobs to cross-compile a library so I can provide precompiled binaries to my users. It looks likecross
currently shells out to thedocker
program, meaning you need to have the client installed on your machine in order to usecross
.I know there's at least one docker client available on crates.io. What are your thoughts on trying to use something like that instead of requiring the docker client to be installed?
The text was updated successfully, but these errors were encountered: