Currently I’m planning to dockerize some web applications but I didn’t find a reasonably easy way do create the images to be hosted in my repository so I can pull them on my server.
What I currently have is:
- A local computer with a directory where the application that I want to dockerize is located
- A “docker server” running Portainer without shell/ssh access
- A place where I can upload/host the Docker images and where I can pull the images from on the “Docker server”
- Basic knowledge on how to write the needed
Dockerfile
What I now need is a sane way to build the images WITHOUT setting up a fully featured Docker environment on the local computer.
Ideally something where I can build the images and upload them but without that something “littering Docker-related files all over my system”.
Something like a VM that resets on every start maybe? So … build the image, upload to repository, close the terminal window, and forget that anything ever happened.
What is YOUR solution to create and upload Docker images in a clean and sane way?
For the littering part, just type
crontab -e
and add the following line:@daily docker system prune -a -f
Careful this will also delete your unused volumes (not attached to a running container because it is stopped for whatever reason counts as unused). For this reason alone, always use bind mounts for volumes you care about.
Yes.
All my self hosted containers are bound to some volume (since they require reading settings or databases).
as a user with root permission or as root ?
You shouldn’t need sudo to run docker, just can create a
docker
group and add your user to it. This will give you the steps on how to run docker withoutsudo
.Edit: as pointed out below, please make sure that you’re comfortable with giving these permissions to the user you’re adding to the docker group.
Doing that, you effectively give the user account root access without password
docker run --volume /etc:/host_etc debian /bin/bash
-> can read/write anything below the host’s/etc
directory, including shadow file, etc.True.
But I assume OP was already running docker from that user, so they are comfortable with those permissions.
Maybe should have made it clearer. Added to my other post. Thanks!
Genuinely curious, what would the advantages be?
Also, what if the Linux distro does not have systemd?
The chances I am going to manage a linux distro without systemd are low, but some systems (arch for example) don’t have cron out of the box.
Not that big of a deal since it’s easy to translate them all, but that’s one of the reasons why I default to systemd/timer units.