Does stopping docker-compose containers unmount volumes?

ε祈祈猫儿з 提交于 2019-12-13 03:04:08

问题


As part of my quest to completely understand how docker deals with volumes under the hood (followup from my previous post), I'm curious about how running docker-compose stop deals with volumes.

There are two possibilities that I suppose may happen:

  1. Volumes are unmounted after running docker-compose stop and then mounted again in lexographic order when running docker-compose start.
  2. Volumes stay mounted until the container is removed using docker-compose rm or a similar command.

I was curious as even restarting a stopped container will create an empty directory in my host folder. I have the following in my docker-compose.yml:

volumes:
- .:/var/www/app
- my_modules:/var/www/app/node_modules

So, from my understanding of the answer in the linked post above, the empty directory is created because of the following:

  1. Bind mount happens first (lexographic order), overwrites everything in /var/www/app
  2. Docker will try to mount node_modules, but since the directory no longer exists in the container (overwritten), it will mkdir node_modules to have a directory to mount the named volume.
  3. Since the bind mount already exists when the mkdir happens, I see a new, empty node_modules folder in my host.

This makes complete sense if the volumes are being mounted, but if 2) is true and they stay mounted even after running docker-compose stop, why would I still be seeing an empty directory being created in my host? I remove node-modules from my host in between the stop and up command for reproducing this behavior.

来源:https://stackoverflow.com/questions/56317302/does-stopping-docker-compose-containers-unmount-volumes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!