Docker is relatively easy to use once you understand what it does.
The way it works can be simplified to - a way to package your app and its dependencies so it works out of the box on any machine that has a Docker Engine. When you run a docker container you specify what access it has to the underlying OS - file system, ports, etc.
A docker container essentially “thinks” it’s the only thing running on your OS unless you tell it otherwise.
Docker compose lets you spin up and configure multiple containers. Allows them to see each other on the network, share file access, etc. All of that happens declaratively in a docker compose file.
IMO it’s easier if your entire suite of apps is managed with compose.
Docker is relatively easy to use once you understand what it does.
The way it works can be simplified to - a way to package your app and its dependencies so it works out of the box on any machine that has a Docker Engine. When you run a docker container you specify what access it has to the underlying OS - file system, ports, etc.
A docker container essentially “thinks” it’s the only thing running on your OS unless you tell it otherwise.
Docker compose lets you spin up and configure multiple containers. Allows them to see each other on the network, share file access, etc. All of that happens declaratively in a docker compose file.
IMO it’s easier if your entire suite of apps is managed with compose.
You can read up on docker here.