我是docker中的新手,我有两个微服务在两个容器中运行,我想为它们创建简单的数据库。 我创造了它:
docker run --net=kajsnetwork -d -e MYSQL_ROOT_PASSWORD='mypassword' -v /storage/mysql1/mysql-datadir:/var/lib/mysql mysql
我使用
输入容器docker exec -it containernumber /bin/bash
然后我创建了数据库...但是当我去主机上的/ var / lib / mysql mysql我没有什么新东西 - 没有我用docker文件创建的数据库。我错了吗?
我想拥有存储在主机上的数据的数据库,但是在docker容器中运行(这是一个很好的解决方案吗?)?怎么做正确?
答案 0 :(得分:2)
你不应该使用docker exec来创建一个实例:容器应该已经有一个。
该文件提到:
该命令的
-v /my/own/datadir:/var/lib/mysql
部分将/my/own/datadir
目录从底层主机系统安装为容器内的/var/lib/mysql
,默认情况下MySQL将写入数据文件。
所以顺序很重要。
答案 1 :(得分:1)
docker cmd选项-v /storage/mysql1/mysql-datadir:/var/lib/mysql
表示您正在将主机目录/storage/mysql1/mysql-datadir
挂载到/var/lib/mysql
作为容器的数据卷
因此,如果您从容器中选中/var/lib/mysql
,您应该会在主机计算机中看到与/storage/mysql1/mysql-datadir
相同的内容。
更多细节: https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume