docker
y docker-compose
parece estar interactuando con el mismo dockerFile, ¿cuál es la diferencia entre las dos herramientas?
fuente
docker
y docker-compose
parece estar interactuando con el mismo dockerFile, ¿cuál es la diferencia entre las dos herramientas?
El docker
cli se usa al administrar contenedores individuales en un motor acoplable. Es la línea de comando del cliente para acceder a la api docker daemon.
El docker-compose
cli se puede usar para administrar una aplicación de contenedores múltiples. También mueve muchas de las opciones que ingresaría en el docker run
cli al docker-compose.yml
archivo para una reutilización más fácil. Funciona como un "script" front-end en la parte superior de la misma API de Docker utilizada docker
, por lo que puede hacer todo lo que docker-compose
hace con docker
comandos y una gran cantidad de scripts de shell. Consulte esta documentación en docker-compose para obtener más detalles.
Actualización para el modo Enjambre
Desde que se publicó esta respuesta, docker ha agregado un segundo uso de los archivos docker-compose.yml. Comenzando con el formato yml de la versión 3 y docker 1.13, puede usar el yml con docker-compose y también para definir una pila en el modo enjambre de docker. Para hacer esto último, debe usar en docker stack deploy -c docker-compose.yml $stack_name
lugar de docker-compose up
y luego administrar la pila con docker
comandos en lugar de docker-compose
comandos. El mapeo es uno por uno entre los dos usos:
Para obtener más detalles sobre el modo enjambre, consulte la documentación del modo enjambre de Docker .
docker
gestiona contenedores individuales
docker-compose
gestiona múltiples aplicaciones de contenedores
El uso de docker-compose requiere 3 pasos:
docker-compose up
para iniciar y ejecutar la aplicaciónA continuación se muestra un ejemplo de docker-compose.yml tomado de los documentos de docker :
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
build: .
en laweb
sección apunta a la ubicación del Dockerfile creado en el paso 1.