我在docker-compose.yml
文件中定义了一个redis服务:
redis:
container_name: redis
image: redis
ports:
- "6379:6379"
如您所见,此处没有定义任何卷。在docker run
/ docker-compose run
的调用之间,redis数据库是否会保留?当我将docker run
与redis-cli
结合使用时,我可以在数据库中看到一些数据,因此我很想知道它的来源。
这里可能发生几件事。
如果重复运行docker-compose up -d
,将努力使现有容器保持活动状态。如果您处于普通的开发周期中并且反复按docker-compose stop app; docker-compose up --build -d
,则这只会重新启动已停止的容器,因此按此顺序,数据库容器将永远不会停止或删除。您将拥有相同的数据库容器。
发生的第二件事是Redis Dockerfile声明VOLUME /data
。如果您未使用VOLUME /data
声明为该目录指定其他任何内容,则Docker将为该目录创建一个anonymous volume。 Docker Compose将跟踪这些事件,并且匿名卷将保持与特定服务的关联,直到您显式volumes:
或使用docker-compose down -v
重新启动该服务。