码迷,mamicode.com
首页 > 其他好文 > 详细

Docker存储

时间:2019-10-06 11:34:23      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:github   创建   目录   and   png   当前目录   数据恢复   oca   play   

Docker容器在运行的时候会产生数据,为了不让这些数据随着容器的删除而删除,Docker支持数据持久化。Docker数据持久化主要有两种方式:volume和bind mount。使用volume数据将持久化在Docker管理的volume中(保存在/var/lib/docker/volumes目录下),使用bind mount,数据将持久化在我们指定的宿主机的某个目录中。

 

和数据持久化相关的Docker命令:

root@mrbird vagrant]# docker volume --help
?
Usage: docker volume COMMAND
?
Manage volumes
?
Commands:
create     Create a volume
inspect     Display detailed information on one or more volumes
ls         List volumes
prune       Remove all unused local volumes
rm         Remove one or more volumes
?
Run ‘docker volume COMMAND --help‘ for more information on a command.

 

volume

以MySQL为例子,查看5.7.25版本的 MySQL Dockerfile,会看到末尾处有这么一行:

VOLUME /var/lib/mysql

 

意思是在Docker创建MySQL容器时,Docker会自动创建一个volume,MySQL容器中/var/lib/mysql目录下的内容将同步到这个volume中。

我们来创建一个MySQL容器:

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25

然后查看是否创建了volume:

技术图片

volume默认的名称好长哦,我们可以在创建容器的时候指定volume的名称,我们删掉MySQL这个容器,重新创建个,并指定volume的名称为mysql:

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql:/var/lib/mysql mysql:5.7.25

-v mysql:/var/lib/mysql的意思是使用名称为mysql的volume(没有则创建),存储容器/var/lib/mysql目录下的内容(和MySQL Dockerfile中使用VOLUME指定的目录一致)。

查看volume:

技术图片

可以看到多了个名称为mysql的volume。

接下来我们做个实验:

进入到MySQL容器中,创建一个名称为docker的数据库:

技术图片

退出容器并删除该容器,然后创建一个新的MySQL容器,volume指定为mysql:

技术图片

可以看到docker这个数据库还在,说明数据恢复了。

bind mount

bind mount例子:

docker run -v /home/aaa:/root/aaa

 

宿主机的/home/aaa将和容器中的/root/aaa同步,宿主机/home/aaa目录下文件做了修改,容器中/root/aaa目录下文件也会被修改,反之亦然。

以Nginx为例,拉取Nginx stable镜像:

docker pull nginx:1.14.2

 

创建Nginx容器:

docker run -d --name nginx -p 80:80 -v $(pwd):/usr/share/nginx/html nginx:1.14.2

 

通过$(pwd):/usr/share/nginx/html我们将宿主机的当前目录和Nginx容器内部的/usr/share/nginx/html目录进行了同步。

我们在宿主机当前目录下新建一个hello.html:

技术图片

然后进入到Nginx容器内的/usr/share/nginx/html目录:

技术图片

同步是ok的,在宿主机外访问 http://192.168.33.10/hello.html 看看(我的宿主机IP为192.168.33.10):

技术图片

参考??:https://docs.docker.com/storage/volumes/

Docker存储

标签:github   创建   目录   and   png   当前目录   数据恢复   oca   play   

原文地址:https://www.cnblogs.com/7788IT/p/11626540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!