Difference between service and container in docker compose
i cant fully answer your question as i dont understand about services myself. However, I do understand volumes_from in relation to containers and so this will answer half your question :) A partial answer is better than none?
CONTAINER A
volumes: /my/shared/directory
container_name:ca
CONTAINER B
volumes_from:ca
Now container B will have a new directory in it /my/shared/directory which is mounted from container A - the contents of the directory in container B will be exactly the same as the contents of the directory in container A
if you discover about services plz let me know
Services and container are related but both are different things.
A service can be run by one or multiple containers.
With docker
you can handle containers and with docker-compose
you can handle services.
For example:
Let's say that we have this docker-compose.yml
file:
web:
image: example/my_web_app:latest
expose:
- 80
links:
- db
db:
image: postgres:latest
This compose file defines two services, web
and db
.
When you run docker-compose up
, Assuming that the project directory is test1
then compose will start 2 containers named test1_db_1
and test1_web_1
.
$ docker ps -a
CONTAINER ID IMAGE COMMAND ... NAMES
1c1683e871dc test1_web "nginx -g" ... test1_web_1
a41360558f96 test1_db "postgres -d" ... test1_db_1
So, in this point you have 2 services and 1 container for each.
But you could scale the service named web
to use 5 containers.
$ docker-compose scale web=5
Creating and starting 2 ... done
Creating and starting 3 ... done
Creating and starting 4 ... done
Creating and starting 5 ... done
In this point you have 2 services and 6 containers
$ docker ps -a
CONTAINER ID IMAGE COMMAND ... NAMES
1bf4c939263f test1_web "nginx -g" ... test1_web_3
d3033964a44b test1_web "nginx -g" ... test1_web_4
649bbda4d0b0 test1_web "nginx -g" ... test1_web_5
a265ea406727 test1_web "nginx -g" ... test1_web_2
1c1683e871dc test1_web "nginx -g" ... test1_web_1
a41360558f96 test1_db "postgres -d' ... test1_db_1
Additionally, with docker-compose you can run subcommand against one or more services.
$docker-compose stop web