我正在将tvial docker邮件服务器从一个系统迁移到另一个系统。我在一段时间前进行了设置,并模糊地记住了步骤,但不是每个细节。我将邮件数据和邮件状态卷复制到了新系统,但是当我在新系统上运行docker时感到困惑。旧系统在docker compose中显示了这一点:
- maildata:/var/mail
- mailstate:/var/mail-state
volumes:
maildata:
driver: local
mailstate:
driver: local
但是这些卷具有不同的名称:
$ sudo docker volume ls
DRIVER VOLUME NAME
local tvial_docker-mailserver_maildata
local tvial_docker-mailserver_mailstate
如果我检查正在运行的实例,则表明它已绑定到正确的卷。
如何在新系统上重现此内容?
我在新系统上运行了docker容器,并且似乎使用类似的命名法构造了maillog容器:
Creating volume "tvial_docker-mailserver_maillogs" with local driver
因此,这不再是紧迫的问题,但是我查看了此容器的dockerfile,但看不到名称的来源。谁能告诉我?
答案 0 :(得分:1)
资源以项目(部署)名称为前缀。
您可以在运行-p
命令时使用docker-compose up
标志来指定。如果未指定,则项目名称默认为docker-compose.yaml文件所属的目录的名称。
此处的官方文档:https://docs.docker.com/compose/reference/envvars/#compose_project_name。问题的相关摘录:
COMPOSE_PROJECT_NAME:
设置项目名称。启动时,此值与服务名称一起添加到容器中。例如,如果您的项目名称为myapp,并且其中包括两个服务db和web,则Compose分别启动名为myapp_db_1和myapp_web_1的容器。