回忆上次的volume的方式,源码https://github.com/limingios/docker No.3 方便学习数据持久化存储
- Dockerfile中
VOLUME ["/var/lib/mysql"] - 别名:持久化地址的方式
docker run -v mysql:/var/lib/mysql
Bind Mouting
- 代码
docker run -v /home/aaa:/root/aaa
- 例子
cd ~
cd labs/docker-nginx/
more Dockerfile
sudo service docker restart
docker build -t liming/nginx .
sudo docker image ls
- 容器生成不适用数据持久化
sudo docker run -d -p 80:80 --name web liming/nginx
curl 127.0.0.1
ip a
- 容器生成使用数据持久化
#删除原来的容器
sudo docker rm -f web
#容器内的80对外部的80,pwd对应/usr/share/nginx/html的
sudo docker run -d -p 80:80 -v $(pwd):/usr/share/nginx/html --name web liming/nginx
curl 127.0.0.1
sudo docker exec -it web /bin/sh
cd /usr/share/nginx/html
#在数据持久化目录里面增加文件aaa.test
touch aaa.test
exit
cd ~/labs/docker-nginx/
#查看路径已经多了一个文件aaa.test
ls
#修改aaa.test文件内容
vim aaa.test
sudo docker exec -it web /bin/sh
sudo docker exec -it web /bin/sh
#容器内可以看到数据持久化的信息
more aaa.test
PS:bind mount 需要指定 host 文件系统的特定路径,这就限制了容器的可移植性,当需要将容器迁移到其他 host,而该 host 没有要 mount 的数据或者数据不在相同的路径时,操作会失败。但是我感觉已经很方便了。
往期精彩
- docker导学(一)
- 容器的技术概述(二)
- docker的魅力初体验-5分钟安装wordpress不走弯路(三)
- docker官网介绍(四)
- 如何在mac上安装docker(五)
- 如何在window上安装docker(六)
- 如何在mac上通过vagrant安装虚拟机(七)
- 如何在window上通过vagrant安装虚拟机(八)
- docker-Machine的本地使用(九)
- docker-Machine的本地使用(十)
- 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
- docker架构和底层技术(12)
- docker Image概述(13)
- 手动建立一个base Image(14)
- 什么是Container(15)
- 构建自己的Docker镜像(16)
- Dockerfile详解(17)
- 镜像的发布(18)
- Dockerfile实战(19)
- 容器的操作(20)
- Dockerfile实战CMD和ENTRTYPOINT的配合(21)
- 容器的资源限制(22)
- docker网络(23)
- docker学习必会网络基础(24)
- Linux网络命名空间(25)
- Docker Bridge详解(26)
- 容器之间的Link(27)
- 容器的端口映射(28)
- 容器网络之host和none(29)
- 多容器复杂应用的部署(30)
- overlay网络和etcd实现多机的容器通信(31)
- docker的数据持久化存储和数据共享(32)
- windows下vagrant 通过SecureCRT连接centos7(33)
- 数据持久化之Data Volume(34)
网友评论