如何将Docker卷移动到磁盘位置?

时间:2020-10-24 23:50:45

标签: docker docker-compose docker-volume docker-container

我有一个MySQL docker image在Ubuntu VPS的docker容器中运行。我通过以下docker-compose up -d文件使用docker-composer.yml命令启动MySQL

version: "3"
services:

    mysql_server:
        image: mysql:8.0.21
        restart: always
        container_name: mysql_server
        environment:
            MYSQL_DATABASE: db_name
            MYSQL_USER: db_username
            MYSQL_PASSWORD: db_password
            MYSQL_ROOT_PASSWORD: root_password
        volumes:
            - mysql_server_data:/var/lib/mysql
            - /mysql/files/conf.d:/etc/mysql/conf.d

我遇到一些性能问题,并且想做以下事情来尝试改善性能。

  1. 我希望将mysql_server_data卷中的数据挂载到/mysql/data上,而不会丢失任何数据,因为此实例在生产中正在运行。

  2. 我还想在/mysql/files上安装MySQL配置文件,以便更改实例配置以提高性能。

问题

如何将卷的数据位置从mysql_server_data更改为/mysql/data

此外,如何在/mysql/files/conf.d上安装MySQL的配置文件以允许我更新设置?

我试图像这样挂载配置文件

        volumes:
            - /mysql/files/conf.d:/etc/mysql/conf.d

但是这创建了一个目录/mysql/files/conf.d,没有配置文件。

1 个答案:

答案 0 :(得分:1)

要移动数据: 使用docker-compose关闭容器,然后在本地文件系统上,将数据从mysql_server_data复制到/ mysql / data。然后更改撰写文件以反映新位置。最后,使用docker-compose up重启容器。

要安装配置文件,请按照MySQL的docker hub文档,如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则您的卷映射为:

/my/custom:/etc/mysql/conf.d

请注意,将卷映射到容器不会将容器中的数据带到本地,而是将数据带到本地。因此,如果要将文件保存在容器中,则必须首先在本地创建文件。