如何在Docker容器中重启mysql之间保存我的数据库

时间:2017-01-17 08:27:32

标签: mysql docker

我在Docker(Docker for Windows 1.12.6,而不是docker工具箱)中使用命令

运行mysql
docker run --name mysqldb -v /d/databases/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:5.7

当我第一次完成它时,一切都很棒。我是如何将主机安装的mysql和数据库目录中的docker容器安装为docker容器卷。

但是当我尝试使用命令docker start mysqldb启动容器agan时,我遇到错误来自守护程序的错误响应:mkdir / d:file exists 错误:无法启动容器:mysqldb

我做错了什么?有没有办法在容器和docker重启之间保存我的数据库?

UPD 这超出了docker ps -a

3b5b6cb91107        mysql:5.7           "docker-entrypoint.sh"   9 hours ago         Up 15 seconds       0.0.0.0:3306->3306/tcp   mysqldb

容器已启动,但卷/var/lib/mysql不再挂载到主机目录。

"Mounts": [
    {
        "Source": "/d/databases/mysql",
        "Destination": "/var/lib/mysql",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

1 个答案:

答案 0 :(得分:1)

这有点奇怪,因为我用我的数据库容器执行了相同的命令,并且每次都正常工作。

docker run --name main-database -e DB_HOST=asas -e DB_PORT=testing -p 3306 -v /home/mahesh/projects/django/tmp/mysql:/var/lib/mysql main/database

请上传输出:

docker ps -a

请检查容器是否处于退出状态。

更新: 我能看到的是你的容器现在已经开始了

我认为你应该重新开始:

请使用docker stop container-id

停止容器

然后将其删除docker rm container-id

如果存在,则删除图像docker rmi image-id

现在使用--rm标志

运行命令
docker run --rm --name mysqldb -v /somedir_in_your_home/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:5.7