Docker 撰写:将卷映射从 docker 卷更改为服务器上的文件夹

Docker compose: Change volume mapping from a docker volume to a folder on the server

我在 Ubuntu 服务器上有一个 Jira 运行 实例,带有 docker-compose。

我最初通过将 jira 安装文件夹映射到名为 jiravolume 的 docker 卷来设置它。

volumes:
 - jiravolume:/var/atlassian/application-data/jira

为了更方便地访问数据,我想将此文件夹直接放在 Ubuntu 服务器上的一个文件夹中。

首先,performance/security有什么区别吗?

如果none,实现这个的步骤是什么?

假设我想要一个文件夹中的数据(相对于 docker-compose 文件),如下所示: ./persist/jira/installfolder 我需要在服务器上创建文件夹结构吗首先然后将 docker-compose 更改为:

volumes:
 - ./persist/jira/installfolder:/var/atlassian/application-data/jira

数据现在是自动复制到新文件夹中,还是仍在旧卷中,所以现在 jira 指向一个空文件夹?

非常感谢

不,那行不通,docker 将为您创建一个漂亮的空新文件夹。

如果在 linux 上,您的卷应该存储在这里:/var/lib/docker/volumes

你可以:

  1. 创建 ./persist/jira/installfolder
  2. 将文件复制过来。然后
  3. 您必须更改文件的权限。并且
  4. 进行您在 docker-compose.yaml
  5. 中建议的更改
  6. 重启docker-compose。 (docker-compose down && docker-compose up应该够了)

提醒您: 如果该路径 ./persist/jira/installfolder 在您的 docker context 中,您可能需要检查您的 Dockerfile 以查看任何 COPYADD 语句。例如,如果您在某个地方有一个 COPY . .,那么如果您重建它,您 运行 就有将您的卷复制到您的映像中的风险。 在那种情况下:要么更改这些语句,要么将您的路径添加到 .dockerignore