run - dockers images
Diferencia entre servicio y contenedor en la ventana acoplable. (2)
Estaba pasando por la opción de volumes_from
en docker. Aparentemente, puede importar volúmenes desde un contenedor o un servicio. Desde la ventana acoplable componer documentación es:
volúmenes_desde
Monte todos los volúmenes de otro servicio o contenedor, especificando opcionalmente el acceso de solo lectura (ro) o de lectura-escritura (rw).
volumes_from: - service_name - service_name:ro - container:container_name - container:container_name:rw
Nota: Los formatos de contenedor: ... solo se admiten en el formato de archivo de la versión 2. En la versión 1, puede usar nombres de contenedores sin marcarlos como tales:
- service_name - service_name:ro - container_name - container_name:rw
Estoy confundido aquí, ¿cuál es la diferencia entre contenedores y servicios aquí?
Los servicios y el contenedor están relacionados, pero ambos son cosas diferentes.
Un servicio puede ser ejecutado por uno o varios contenedores. Con la docker
puede manejar contenedores y con la docker-compose
puede manejar servicios.
Por ejemplo:
Digamos que tenemos este archivo docker-compose.yml
:
web:
image: example/my_web_app:latest
expose:
- 80
links:
- db
db:
image: postgres:latest
Este archivo de redacción define dos servicios, web
y db
.
Cuando ejecute docker-compose up
, asumiendo que el directorio del proyecto es test1
luego compose iniciará 2 contenedores llamados myapp_db_1
y myapp_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
Entonces, en este punto tienes 2 servicios y 1 contenedor para cada uno.
Pero podría escalar el servicio llamado web
para usar 5 contenedores.
$ 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
En este punto tienes 2 servicios y 6 contenedores.
$ 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
Además, con docker-compose puede ejecutar un subcomando contra uno o más servicios.
$docker-compose stop web
No puedo responder completamente a tu pregunta, ya que no entiendo sobre los servicios por mi cuenta. Sin embargo, comprendo volúmenes en relación con los contenedores, por lo que esto responderá a la mitad de tu pregunta :) ¿Una respuesta parcial es mejor que ninguna?
CONTENEDOR A
volumes: /my/shared/directory
container_name:ca
CONTENEDOR B
volumes_from:ca
Ahora el contenedor B tendrá un nuevo directorio en él / my / shared / directory que se monta desde el contenedor A: el contenido del directorio en el contenedor B será exactamente el mismo que el contenido del directorio en el contenedor A
Si descubres sobre servicios por favor házmelo saber.