I run Docker inside a Linux VM on a Proxmox homelab and have been using it to experiment with containers. My main goal is to become more comfortable writing Dockerfiles and Docker Compose files, but the official documentation can be difficult to follow without a broader, hands-on tutorial.
I tried the Docker guides and labs, but many of them fail almost immediately. For example, the first command in the "Getting Started with Docker" lab reports that the experimental OCI remote resource feature is disabled and requires `COMPOSE_EXPERIMENTAL_OCI_REMOTE=1`. After enabling that variable, the command fails again because `services.configurator` contains an unsupported `use_api_socket` property.
I'm running Docker Engine 26.1.5 and Docker Compose 2.26.1 inside the VM, rather than Docker Desktop. Are these labs intended specifically for Docker Desktop, or is there something missing from my setup? If the material is outdated, what current hands-on resources would you recommend for learning to write better Dockerfiles and Compose configurations on a self-hosted homelab?
2 Answers
A lot of the newer guides assume Docker Desktop, including features and integrations that aren’t available in a plain Docker Engine installation on a headless VM. The normal container and Compose commands still work, but you may need to skip Desktop-specific steps or translate them into regular CLI commands. The `use_api_socket` error strongly suggests that the lab’s Compose file expects a feature your installed Compose version doesn’t support, so upgrading Compose or using an older compatible example may be necessary.
It’s difficult to tell whether the problem is a version mismatch or an environment issue without the exact command and complete error output. Include the results of `docker version` and `docker compose version`, along with the first command that fails. That will show whether the lab expects a newer Compose feature or a particular Docker setup.

My Docker Engine is 26.1.5 and Docker Compose is 2.26.1. The first lab command fails because OCI remote resources are disabled; after setting `COMPOSE_EXPERIMENTAL_OCI_REMOTE=1`, it rejects the `use_api_socket` property as unsupported.