我在项目上使用Docker和Docker Compose。我有3个容器:PHP,MySQL和Nginx。
目前,MySQL二进制数据存储在MySQL容器(/var/lib/mysql/...
)中。
我认为这不是最佳做法,如果容器从头开始重建,甚至可能会很危险。
保持数据安全的最佳方法是什么?
谢谢:)
答案 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