将MySQL数据保存在Docker容器中

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

我认为这不是一个最好的做法,如果集装箱从头开始重build,甚至可能是危险的。

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

谢谢 :)

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

数据卷 :数据卷是绕过联盟文件系统的一个或多个容器内的特定目录。

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

 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": "" } ], ... 

或者,您可以在您select的服务器上将一个filsystempath挂载到docker容器,如下所示:

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

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

Docker Compose的解决scheme非常简单:

 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