一尘不染

如何仅使用docker-compose.yml创建数据容器?

docker

这个问题来自Docker存储库中的一个问题:https :
//github.com/docker/compose/issues/942

我无法弄清楚如何使用docker compose创建数据容器(无进程运行)。


阅读 708

收藏
2020-06-17

共1个答案

一尘不染

确切的操作方法在一定程度上取决于您将数据仅用于容器的图像。如果您的图片带有entrypoint,则需要在中将其覆盖docker- compose.yml。例如,这是来自docker hub的官方MySql映像的解决方案:

DatabaseData:
  image: mysql:5.6.25
  entrypoint: /bin/bash

DatabaseServer:
  image: mysql:5.6.25
  volumes_from:
    - DatabaseData
  environment:
    MYSQL_ROOT_PASSWORD: blabla

当您执行docker-compose up此操作时,您会得到一个类似的容器..._DatabaseData_1,其中显示了Exited呼叫时的状态docker ps -a。的进一步调查docker inspect将显示,其时间戳为0。这意味着该容器从未运行过。就像docker
owner在此处声明的那样。

现在,只要您不执行docker-compose rm -v,您的仅数据容器(..._DatabaseData_1)就不会丢失其数据。所以,你可以做docker-compose stop,并docker-compose up经常随你喜欢。

如果您喜欢使用专用的仅数据图像,则tianon/true此方法也一样。在这里,您不需要覆盖entrypoint,因为它不存在。该映像和docker
compose似乎存在一些问题。我没有尝试过,但是如果您遇到任何问题,这篇文章值得一读。

通常,对仅数据容器使用与访问它的容器相同的图像似乎是一个好主意。有关更多详细信息,请参见仅数据容器疯狂

2020-06-17