赞
踩
假如你想把数据库集成到docker中,那么为了使容器数据持久化,你需要利用dockre volume。
你可以先创建一个volume然后再挂载,也可以直接不创建直接挂载容器目录。你可以指定容器目录挂载到宿主机特定目录,也可以不指定,默认存放在/var/lib/docker/volumes。
docker version:17.12.1-ce
1、先创建,再指定
docker volume create test;
docker run -it --name haha1 -v test:/opt/haha1 centos /bin/bash;
docker inspect haha1 | grep volumes;
2、直接指定宿主机特定目录,容器目录和宿主机目录不存在会默认创建
docker run -it --name haha2 -v /opt/haha2:/opt/haha2 centos /bin/bash;
设置容器目录为只读模式
docker run -it --name haha3 -v /opt/haha3:/opt/haha3:ro centos /bin/bash;
3、创建volume容器,多个容器共享数据
创建volume container:
docker run -it -v /var/volume1 -v /var/volume2 --name volume_container centos /bin/bash;
容器1:
docker run -it --rm --volumes-from volume_container --name App_Container1 centos /bin/bash;
容器2:
docker run -it --rm --volumes-from volume_container --name App_Container2 centos /bin/bash;
只要有容器在使用volume或者volume container,不论容器是否被删除,volume中的数据都不会丢失。
4、在当前目录备份容器数据
docker run --rm --volumes-from volume container -v $(pwd):/backup centos tar cvf /backup/backup.tar
/var/volume1 /var/volume2;
其实容器数据既然已经映射到磁盘,那么直接在操作系统物理备份就好了,官方这样做不知道有什么意义?
5、恢复容器数据
docker run --rm --volumes-from volume_container -v $(pwd):/backup centos tar xvf /backup/backup.tar -C /;
或者在宿主机直接移动数据到volume锁映射的目录。
6、删除volume
volume 只有在下列情况下才能被删除:
1)docker rm -v删除容器时添加了-v选项
2)docker run --rm运行容器时添加了--rm选项
否则,会在/var/lib/docker/volumes目录中遗留很多不明目录。
可以使用下面方式找出,然后删除_data目录下的数据文件:
docker inspect huihui|grep /var/lib/docker/volumes
docker挂载volume很简单,就不多说了!
oracle交流qq群:27877619
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。