好的,让我们直接开始我们的最后一讲吧,bind mounting。
volume mount 和 bind mounting的区别是什么?
主要的区别是bind mount在host machine上创建persistent volume 。而volume mounting则是在docker host 上创建,因此我们需要在volume mounting的时候提供整个目录名。
用实践来体会不同
我们先创建一个目录
mkdir data
输入下列命令,验证data目录已经被创建
ls -lrt
输入下列命令,并记住输出:
pwd
这条命令会显示当前路径,在接下来的输入里我们要使用到该路径。
使用下列命令创建一个容器
docker run -itd -v [data目录所在路径]:/www ubuntu
如:
docker run -itd -v /home/user/data:/www ubuntu
输入下列命令查看容器是否被创建:
docker ps
接下来我们要连接到容器中:
docker exec -it [容器ID] [COMMAND]
在交互模式下
跳转到www目录内
cd /www/
创建一个txt文件
echo "Test Data"> test.txt
退出交互模式
exit
回到host machine后
跳转到data目录下
cd data
查看目录下的文件
ls
输出中应该可以看到我们创建的txt文件
我们看看现在我们机器里有多少volumes了
docker volume ls
输出应该如下:
DRIVER VOLUME NAME
local 250b045b133846fc2c0a2029293db67d3242f55ed57067629c8e17460d3580c1
local data_volume
发现了么?我们data目录不存在于docker volume列表下面。
接下来我们要把这个data目录mounting到另一个容器上
docker run -itd --mount type=bind,source=[data目录地址], target=/www ubuntu
如:
docker run -itd --mount type=bind,source=/home/user/data, target=/www ubuntu
查看容器
docker ps
连接容器
docker exec -it [容器ID] [COMMAND]
在该容器的www目录里我们会找到txt文件,验证后,我们就可以退出该交互模式了
接下来我们学一点删除操作
先停止所有容器
docker stop $(docker ps -aq)
删除所有容器
docker rm $(docker ps -aq)
显示所有volumes
docker volume ls
然后指定删除某个volume 如:
docker volume rm data_volume
总结
我这个系列的连载就到此为止了,希望各位至今和我一样都沉淀或学习了一些新的东西。如果想进一步学习的话,可以看看我的Kubernetes连载系列,同样会是以项目实践的方式进行学习沉淀。
|