[SOLVED] How to fork a docker image?
from nico198X@piefed.europe.pub to selfhosted@lemmy.world on 03 Sep 08:25
https://piefed.europe.pub/post/15905

Solved!

more expanded details can be seen here:

github.com/TheoLeCalvar/…/6#issuecomment-32465620…

Thank you, all!


hey all!

i need some guidance. can you help point me in the right direction?

there a docker image that is basically fine, except i just want to add a group to it so that group will exist in the container.

how do i do this? is there a way to do this that will just pull the original image as is, so it will update when the original image updates, and then just add the group i need?

thanks in advance!

#docker #linux #podman #selfhosted

threaded - newest

traches@sh.itjust.works on 03 Sep 08:31 next collapse

Make your own dockerfile, and the first line will be FROM <upstream>. Then make your changes.

nico198X@piefed.europe.pub on 03 Sep 09:33 collapse

awesome, thanks!

i will give this a go!

edit this worked perfectly, thank you!

tofu@lemmy.nocturnal.garden on 03 Sep 08:46 next collapse

Either create a Dockerfile that is based on the original one as the other comment suggests, or find the git repo of the original Image, fork it and add your changes to the Dockerfile.

If you want to include changes from the original one you’ll need to set up some kind of regular job that checks for a new image or changes in the git repo and then applies your changes.

If you need it to be available at Dockerhub, ghcr or the like, you need some additional setup, usually a CI that pushes it.

nico198X@piefed.europe.pub on 03 Sep 09:32 collapse

thanks!

these aren't changes i can merge up, and i want to ensure it's always, ultimately, just pulling the original image with any new changes they make, and then making the changes i need, so i think the other solution is probably the most applicable for this problem.

Voroxpete@sh.itjust.works on 03 Sep 10:58 next collapse

The answers about using Dockerfiles are absolutely correct, but if you’re looking for a quick and simple solution that will work locally, you can always just use the “commit” docker command. This basically saves the current state of a container as a new image. You can then run new containers from that image as needed.

See stackoverflow.com/…/how-to-save-a-docker-containe…

sugar_in_your_tea@sh.itjust.works on 03 Sep 15:18 collapse

This is totally fine for testing, but there are almost always better solutions.

frongt@lemmy.zip on 03 Sep 12:39 collapse

What exactly are you doing? You may not need to do this. I know you can use the group number instead of the name if it doesn’t exist in some cases.

nico198X@piefed.europe.pub on 03 Sep 12:46 collapse

for the expanded discussion, you can check here:

https://github.com/TheoLeCalvar/peertube-plugin-hardware-transcode-vaapi/issues/6#issuecomment-3246562059

frongt@lemmy.zip on 03 Sep 14:08 collapse

Right, you just need to make sure that the user inside the container has permission to the device. They cover this in the front page of the repo: github.com/…/peertube-plugin-hardware-transcode-v…

sugar_in_your_tea@sh.itjust.works on 03 Sep 15:16 next collapse

And you can map internal users to external users. This isn’t as common with Docker since things tend to run as root, so maybe look up Podman docs where it’s more common since it’s whole schtick is running with minimal permissions.

nico198X@piefed.europe.pub on 03 Sep 15:49 collapse

this would be useful but i was never able to figure out how. :/

sugar_in_your_tea@sh.itjust.works on 03 Sep 15:52 collapse

Basically this:

docker run -it --user $UID:$GID

Pass it a user and group that have the appropriate access, and no more. You can also set this in Docker compose or whatever other abstraction you’re using.

nico198X@piefed.europe.pub on 03 Sep 15:55 collapse

so, in this case, the internal user is peertube with UID 999.

would i then use that UID, and the GID of the passed render device?

sugar_in_your_tea@sh.itjust.works on 03 Sep 16:00 collapse

Passing that in basically overrides the [USER field in the Dockerfile](docker run -it --user $UID:$GID). Make sure that user/group combo has access to the render device.

nico198X@piefed.europe.pub on 03 Sep 17:10 collapse

lol i can't believe this just worked. XD

falls over i've spent MONTHS on this. XD i am LITERALLY completely embarrassed now. XD

i just didn't think i had that level of control. i kept reading that even if the IDs match it's not REALLY the same as the host permissions, but this worked just fine. a much simpler solution.

well, thank you for that! still so much to learn.

sugar_in_your_tea@sh.itjust.works on 03 Sep 21:15 collapse

No prob! Glad you got it to work, permissions can be a huge pain.

nico198X@piefed.europe.pub on 03 Sep 15:47 collapse

right, so what confused me is that the basic setup works for owncast, but the same setup not for peertube.