feat: add docker-on-docker support#1187
Open
felipecrs wants to merge 1 commit intocontainerbase:mainfrom
Open
Conversation
a7cffdf to
d137682
Compare
d137682 to
4fd0d91
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This enables running docker commands (like
docker build) inside the devcontainer itself.For that to work,
fixdockergidis now installed in the image and runs automatically on container start, which ensures thedockergroup inside the container has the same GID as the host'sdockergroup, allowing seamless access to the docker socket.To help test this, I added a devcontainer definition to this repository itself. Try reopening it in the devcontainer and running
docker build .from the terminal. It should work without any permission issues.Besides
--use-api-socket(which replaces the good old-v /var/run/docker.sock:/var/run/docker.sockwith perks), I also recommend running the devcontainer with--network=hostso that it can access other services running as containers, like Redis (for Renovate).After/if this PR is merged, I'll update the devcontainer definition of Renovate as well to leverage it.
Disclaimer:
fixdockergidis my own open source project which I've been using and maintaining for several years.