How to reclaim disk space used by Docker volumes, but keep a few important on
domm.plix.at
domm.plix.at
Between that and Electron apps taking up any smidgen of available RAM I'm surprised my machine is able to run anything else at all.
[1] for example someone there mentioned that Apple Software Update app refuses to update system, claiming there's not enough space.
The thing is, if you want to look at the physical size of a file/directory, you don't use ls, you use du. Similarly, if you want to look at disk usage and free space on a volume, you use df, not summing up ls reported size of all files. Using df for free space is especially important on APFS since you have APFS volumes sharing the space in a container. And of course, du and df correctly report actual disk usage. If you check Docker.raw in Finder, it says something like "63,999,836,160 bytes (10.25 GB on disk)", too. Btw, even `ls -l` reports correct total disk usage:
$ ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data
total 9.6G
-rw-r--r-- 1 <omitted> staff 60G Jun 17 02:01 Docker.raw
There's just no way "the rest of the system treats the spare file as regular file". I suspect people actually have disk space tied up in APFS snapshots (Time Machine takes a lot of those and I have to clear them constantly with tmutil on machines with meager SSDs), but they're not aware of that, instead they ran some crappy script or something found online, located this "huge file", then just blamed it for the disk usage. Any proper tool, e.g. Disk Utility (builtin), DaisyDisk won't make this obvious mistake. I thought maybe people were using Finder search to find large files and that's the problem, but I just tried and Finder search also makes a distinction between logical size and physical size, so it's not even that.Edit: In case it's not clear, sparse files don't "reserve" their space. Try this:
for i in {000..999}; do dd if=/dev/zero of=/tmp/sparse-$i bs=1024 count=0 seek=104857600; done
You just created a thousand 100GiB files totaling zero bytes in disk usage (not counting metadata).> for i in {000..999}; do dd if=/dev/zero of=/tmp/sparse-$i bs=1024 count=0 seek=104857600; done
On an APFS volume with 18GB of free space, that bombed out with "No space left on device"
As I said, reports like "macOS installer says there's not enough disk space because of a sparsefile somewhere" and "macOS tells me disk space is low every two minutes because of a sparsefile somewhere" just aren't credible if you understand how it works. Otherwise, how would they behave if you create a thousand "100GB files" like I demonstrated? Going all crazy? Your free disk space is negative?
Yes, your theoretical knowledge, which several of the people in that thread obviously have, beats actual experience.
Not only is that not credible, it's about as useful and insightful as "it works for me" - and who on Earth is using statvfs on a Mac? Is the installer using statvfs? You've looked, right? And you believe every developer uses the correct APIs and never introduces a bug…
Try reading and not skimming, it's especially important when dealing with bug reports.
Start as deamon with: docker-compose up -d
Stop with -v to remove anonymous volumes:
docker-compose down -v
This will slow down swelling
docker logs -f CONTAINER
If you want to watch logs from a specific file within the container then I would just use 'docker exec' and whatever shell commands you prefer.So you don't have to manually hunt down the container you want the logs for.
docker-compose up -d && docker-compose logs -f
https://github.com/amir20/dozzle (a container that plugs into the docker API to render a webpage with logs of running containers)
It’s a bit of a scorched earth approach, and it won’t help if you want to preserve volumes, but it’s a good way to ensure no docker cruft is left behind on your local machine.
and then one day my disk was full.
https://lebkowski.name/docker-volumes/
and I always added: docker run --rm ...
But clearly I didn't internalize all the stuff that's saved.
https://gist.githubusercontent.com/mlebkowski/471d2731176fb1...
To this day I don’t understand what problems the client/server model solved, and why it was worth all the problems it created.
Remember, containers are just Linux cgroups, there is nothing “special” about a container that requires a client/server.
> Because I cannot be bother to remember this, and don't want to google how it's done only to end up at my own blog, I did a quick realias to add a new bash alias