tildes.net
Rant: Docker is a labyrinth maze of brick walls and show-stopping issues that has done nothing but slow my development - ~comp
Firstly, I apologise for the rant. ... Since then, I haven't been able to dedicate much time to solving *any* of the issues I've outlined in that thread, but what I will say is that docker has caused me nothing but pain, and I have realised zero benefits from attempting to utilise it. Right from the start, the syntax for docker, docker-compose, and Dockerfiles is confusing and full of edge cases which no one explains to you in the hype of actually discussing it: - These 'images' you build grow to insane sizes unless you carefully construct and regiment your `RUN`, `COPY`, and other commands. - Docker complains to you about leaving empty lines in multi-line RUN commands (which is itself, as I see it, basically a hack to get around something called a "layer limit"), even if it contains a comment (which is not an empty line) and does not provide a friendly explanation on how to solve this issue. - There's basically no good distinction between bind mounts and volumes, and the syntax is even more confusing: declaring a `volumes`entry in a docker-compose.yml? You have no good idea if you're creating a volume or a bindmount. - Tutorials & documentation tends to either assume you're a power user who knows this sort of thing, or are so trivial they don't accurately represent a real-world solution, and are therefore basically useless. I've suffered endless permissions issues trying to run portions of my application, such as being unable to write to log files, or do trivial things like clearing a cache—that I have tried a dozen different ways of fixing with zero success. Then, when I run some things from within the docker container, such as tests, they can take an excruciatingly long time to run—only then did I discover that this is yet another docker issue. The whole point of docker is to abstract away the host OS and containerise things and it can't even do that. … `docker container exec -it php sh`. Docker-sync, kubernetes, docker-compose, images, containers. It's legitimately too much. I'm not a dev-ops or infrastructure guy. I just want to write code and have my app work. I don't have the money to employ anyone to solve this for me (I'm not even employing myself yet). … Well, that was just an example, but the truth is that the framework I'm using expectsto be able to write to its own internal log file, irrespective of my actions. It's encountering permissions issues not because I'm violating the informal "one container = one unit" rule, but rather because of how permissions are transferred in bind mounts/volumes from the host system in Docker. One problem is that you are using docker for Mac. Docker is hot trash outside of Linux, because on other platforms it has to run on a virtual machine instead of being a simple container. If you are working on a project with just yourself, I don't really recommend using docker in general. It's just another layer of complexity. Docker is only really useful if you have a team wit This has struck me as messed up ever since I started using Linux; other devs use Macbooks and companies seem to force it and mandate it for all developers (business people use Thinkpads or whatever Windows-equipped laptops are around) and yet we end up deploying our software onto Linux servers. All the user-facing stuff is in HTML/CSS and it would make more sense to run an emulator for Mac or Windows on top of Linux to make sure the frontend stuff looks good in different browsers. … Lot of good information in this post. However this bit: From personal experience with H2, MSSQL, PCF, and docker, be picky about H2. H2 is great for prototyping and initial development. However I've inevitably run into times where syntax differences between H2 and the production MSSQL required writing a different query for each environment. In and of itself this is not a big deal, but over the lifetime of the app it grows and becomes more overhead. So I recommend ditching H2 as soon as you can, get a copy of whatever the prod DB is running locally. … That's how I feel with any software development to be honest. The difference is how often the interruptions to development and the amount of yak-shaving that needs to be done. Docker is just yet another complicated bit of machinery that slows down dev once in a while for me (in a previous company it slowed down development a lot). … TBF, your critiques are valid coming from someone who uses Docker for Mac exclusively. But most of this seems like you're just not willing to learn the lingo/research solutions. That's not to say that Docker is fantastic, it definitely has stuff to improve on, but a lot of your issues seem like non-issues to me. Docker isn't meant to be a quick and effortless solution to every coders' problem, it's a toolset all on its own.
Related Pain Points7件
Slow test execution within Docker containers
6Running tests from within Docker containers takes excruciatingly long to complete, adding significant overhead to the development and testing workflow.
Docker volume permission mismatches (UID/GID)
6File ownership mismatches occur when mounting volumes, causing "Permission Denied" errors. Requires manual UID/GID matching or SELinux context configuration.
Steep Learning Curve for Docker Adoption
6Developers transitioning from other infrastructure approaches find Docker difficult to master despite initial ease of use. The steep learning curve is compounded by Docker extensions and additional tools that increase platform complexity, and rapid updates that make it hard to maintain proficiency.
Docker Desktop Performance Degradation on Windows and macOS
6Docker Desktop emulates Linux containers using virtual machines on Windows and macOS, resulting in slow performance, excessive CPU consumption, and battery drain during heavy builds and container orchestration. Native Linux performance is significantly better, creating cross-platform friction.
Confusing Docker syntax and layer management complexity
5Docker, docker-compose, and Dockerfile syntax is confusing with numerous edge cases. Image sizes grow to problematic sizes unless carefully constructed, and Docker enforces restrictions on multi-line RUN commands that lack clear documentation on resolution.
Unclear distinction between Docker bind mounts and volumes
4Docker documentation and syntax make it difficult to distinguish between bind mounts and volumes. Declaring a volumes entry in docker-compose.yml provides no clear indication whether a volume or bind mount is being created, leading to configuration confusion.
Poor Docker documentation with unrealistic tutorials
4Docker tutorials and documentation either assume users are power users with deep knowledge or are so trivial that they don't represent real-world solutions, making them essentially useless for practical development scenarios.