我无法从容器外部更改数据库。
我正在使用api和此主体创建的docker容器中运行mariaDB。
{
"Image": "mariadb/server:10.4",
"env": ["MYSQL_ROOT_PASSWORD=pass",
"MYSQL_DATABASE=test",
"MYSQL_USER=user1",
"MYSQL_PASSWORD=pass"],
"HostConfig": {
"PortBindings": {
"3306/tcp": [{"HostPort": "3309"}]
}
}
}
我可以使用以下方法进入数据库:
sudo mysql -h 172.17.0.6 -u root -p
但是我所做的所有更改都不是持久的(创建用户,赋予特权,从转储中还原数据库等)。
尽管我可以从容器内部对DB进行更改,例如:
docker exec -it nameOFContainer bash
我想知道为什么我的容器会这种行为,并且有什么方法可以改变行为吗?
答案 0 :(得分:3)
您必须做两件事:
例如:
mysql -u root -h 127.0.0.1 -P3309 -p
-v $HOME/docker/volumes/mysql:/var/lib/mysql
主机中的 $ HOME / docker / volumes / mysql 目录映射到Docker容器的 / var / lib / mysql 目录(这是数据库所在的位置)从中获取必要的文件。
答案 1 :(得分:0)
您需要定义一个卷以保留MariaDB数据。您可以在docker run上使用-v选项。我想这也可以在API中实现。
-v /my/own/datadir:/var/lib/mysql