将MySQL数据保存在Docker容器中

时间:2017-02-11 16:04:18

标签: mysql docker

我在项目上使用Docker和Docker Compose。我有3个容器:PHP,MySQL和Nginx。 目前,MySQL二进制数据存储在MySQL容器(/var/lib/mysql/...)中。

我认为这不是最佳做法,如果容器从头开始重建,甚至可能会很危险。

保持数据安全的最佳方法是什么?

谢谢:)

2 个答案:

答案 0 :(得分:1)

如果这是独立服务器,保证数据安全的最佳方法是使用docker data volumes。这两个选项是:

  

数据卷:数据卷是一个或多个容器中专门指定的目录,绕过联合文件系统。

数据卷可以由文件系统上的docker自动创建,如:

docker run -d --name nginx -v /usr/share/nginx/html nginx

docker inspect nginx
...
        "Mounts": [
            {
                "Name": "4fead165b4c3ba1a900ca1ab0e095f43ee32d6a4c61eba37f4bcb28c58ce7036",
                "Source": "/var/lib/docker/volumes/4fead165b4c3ba1a900ca1ab0e095f43ee32d6a4c61eba37f4bcb28c58ce7036/_data",
                "Destination": "/usr/share/nginx/html",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
...

或者您可以在您选择的服务器上安装filsystem路径,如:

docker run -d --name nginx2 -v /tmp/test:/usr/share/nginx/html nginx

了解更多信息,请参阅: https://docs.docker.com/engine/tutorials/dockervolumes/

答案 1 :(得分:1)

解决方案非常简单,使用Docker Compose:

version: "2.0"


services:
    mysql:
        image: mysql:5.7
        volumes:
            - "mysql_data:/var/lib/mysql" # data container
volumes:
    mysql_data:
        driver: local

我可以通过Docker看到我的音量

docker volume ls