没有卷的 docker-compose 服务

标签 docker redis containers docker-volume

我在 docker-compose.yml 文件中定义了这样的 redis 服务:

redis:
  container_name: redis
  image: redis
  ports:
    - "6379:6379"

如您所见,此处没有定义卷。 Redis 数据库在调用 docker run/docker-compose run 之间是否会持续存在?当我使用 docker runredis-cli 时,我可以在数据库中看到一些数据,所以我很好奇它来自哪里。

最佳答案

这里可能会发生一些事情。

如果您重复运行docker-compose up -d ,它将努力保持现有容器的活力。如果您处于普通开发周期并反复docker-compose stop app; docker-compose up --build -d ,这只会重新启动已停止的容器,因此按此顺序数据库容器将永远不会停止和删除;您将拥有相同的数据库容器。

发生的第二件事是 Redis Dockerfile 声明 VOLUME /data 。如果您没有使用 volumes: 为该目录指定任何其他内容声明后,Docker 会为该目录创建一个匿名卷。 Docker Compose 将跟踪这些,并且匿名卷将保持与特定服务的关联,直到您明确 docker-compose down -v 或者使用 docker-compose up --renew-anon-volumes 重新启动服务.

关于没有卷的 docker-compose 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588066/

相关文章:

docker - 恢复 Gitlab Docker 设置

angular - 在 docker 内使用 chrome headless 运行 ng 测试(angular-cli 业力测试)

故障转移后 Redis master 回退

java - CAS 服务器 Tomcat 8 Java 8 高可用性(HA/集群)

docker - 如何保持 docker 容器运行?

c++ - 为什么C++不提供先进先出单链接列表?

variables - 如何在 Dockerfile 中定义变量?

git - 如何根据公共(public)注册表中的 git 标签创建 Docker 镜像?

ruby-on-rails - Redis 上的连接数是否会限制我可以在后台执行的作业数?

docker - 如何从奇点图像构建docker图像