Estoy usando docker-compose para definir mi servicio. En docker, hay dos conceptos para el volumen de docker. En primer lugar, se trata de bind mount: montar en el almacenamiento del host.

docker run -d --name web-app -v $HOST/location:/container/location -p 80:80 httpd:latest

En segundo lugar, se trata de managed mount: almacenamiento abstracto, no depende del host.

docker run -d --name web-app -v /container/location -p 80:80 httpd:latest

Quiero asignar esos conceptos a docker-compose. Significa cómo puedo definir bind mount y managed mount cuando uso docker-compose.

27
Trần Kim Dự 23 dic. 2016 a las 13:20

3 respuestas

La mejor respuesta

Puede encontrar estos conceptos de Docker en la sección volumes de Docker Compose: https://docs.docker.com/compose/compose-file/#/volumes-volumedriver

Ejemplos:

volumes:
  # Just specify a path and let the Engine create a volume
  - /container/location

  # Specify an absolute path mapping
  - ./myfolder/location:/container/location
28
nwinkler 23 dic. 2016 a las 10:44

Aunque estoy respondiendo muy tarde. Pero tal vez ayude a otras personas en el futuro. A continuación se muestra la configuración para ambos tipos. https://docs.docker.com/compose/compose-file/#volumes

    version: "3.2"
    services:
     web:
      image: httpd:latest
      volumes:
       - type: bind
         source: $HOST/location
         target: /container/location
       - type: volume
         source: mydata
         target: /container/location
     volumes:
      mydata:
31
Raman Sharma 9 abr. 2019 a las 21:29

Sé que es tarde para responder, pero principalmente escribo esto para la comunidad.

Responder:

Solo necesitas hacerlo así:

    volumes:
       - ./root/instantclient_12_2/ojdbc8.jar:/etc/kafka-connect/jars/ojdbc8.jar
       - type: bind
         source: $HOST/etc
         target: /kernel-etc

Luego, para ejecutarlo en 'modo fácil de depurar', hágalo primero con docker-compose up y cuando se aseguró de que funcionaba bien, agregue un -d al final.

Notas importantes

1-Asegúrese de que su versión docker-compose sea al menos 3.2 y, en mi caso, es 3.7. para actualizar y deshacerse de la versión anterior, haga lo siguiente:

sudo apt-get remove docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Fuente: https://github.com/10up/wp- local-docker / issues / 58 # issuecomment-476786006

2- No olvides rm tu antiguo contenedor para que no te enfrentes a problemas extraños relacionados con el puerto. así es cómo:

docker container stop YOUR_CONTAINER_ID
docker container rm YOUR_CONTAINER_ID

Buena suerte.

1
Aramis Nasirianfar 17 mar. 2020 a las 17:23