docker挂载本地目录_Docker:使用本地卷和tmpfs挂载

卷是为Docker容器保留数据的首选方法。
在本文中,将展示如何创建和使用卷来实现持久性,以及如何使用tmpfs来实现临时存储。
最简单的说,创建和安装由本地目录支持的卷如下所示:
# make host directorymkdir -p /data# create docker volume from host directorysudo docker volume create --driver local --opt type=none --opt device=/data --opt o=bind --name=test# mount volume within containersudo docker run -it --mount source=test,target=/mymount alpine:latest /bin/df -h /mymount
卷安装
现在,让我们看一个具体的示例,其中有一个运行Apache2的容器,该容器从其Web根传递内容。
在github上创建了一个名为fabianlee / alpine-voltest的项目,并将其推送到docker hub。
该Dockerfile很小,仅扩展了alpine-apache映像,然后通过在从容器提供Web内容的目录中添加一个卷,将其进一步扩展了。
FROM fabianlee/alpine-apache:2.4.41-r0...VOLUME "/var/www/localhost/htdocs/"
让已打包好的状态运行容器,不装入任何卷。
sudo docker run -d --rm --name alpine-voltest -p 8080:80 fabianlee/alpine-voltest:1.0.0
打开本地Docker主机上的浏览器端口8080。

e8c564dad6756057badb40234bf0beb0.png

返回的内容是放置在“ / var / www / localhost / htdocs”目录中的容器上的默认index.html。

继续并立即停止容器。

sudo docker stop alpine-voltest
但是,如果将本地卷安装到该容器目录,则可以控制该卷从该Web服务器传递的内容。
# create local host contentsudo mkdir -p /data/testecho "

This is mounted on the docker host at /data/test/index.html

" | sudo tee /data/test/index.html# create docker volume from host directorysudo docker volume create --driver local --opt type=none --opt device=/data/test --opt o=bind --name=test# volume detailssudo docker volume inspect test# create container that uses test volume, mounts at web rootsudo docker run -d --rm --name alpine-voltest -p 8080:80 --mount source=test,target=/var/www/localhost/htdocs fabianlee/alpine-voltest:1.0.0 现在,浏览器将返回以下内容,即我们放入本地docker主机文件“ /data/test/index.html”中的内容。

0cf77264a25f8ec41d983b9f6f9bd172.png

再次停止容器。
sudo docker stop alpine-voltest# list volumessudo docker volume ls
即使容器停止后,这些文件仍保留在主机上,以后的容器实例也可以重新挂载该卷。
初始数量人口
如果使用不存在的卷名启动容器,则将创建一个新的卷。此外,如果主机目录完全为空,则容器的内容将填充(复制到)本地主机卷目录中。
# start container, allow it to create volume and populate
sudo docker run -d --rm --name alpine-voltest -p 8080:80 --mount source=newtest,target=/var/www/localhost/htdocs fabianlee/alpine-voltest:1.0.0
# volume details
sudo docker inspect newtest | grep -i Mountpoint
# get list of files in new volume (should now contain index.html)
sudo ls -l /
# stop container
sudo docker stop alpine-voltest
# data still persists, but can be deleted
sudo docker system prune
sudo docker volume prune
临时文件系统
对于只能由单个容器使用的小型临时存储空间,有tmpfs文件系统。它仅由主机系统上的RAM存储支持。
创建安装在/ tempdisk的2Mb临时磁盘空间

cab542ebbabdb1cd452174cc15b53e9f.png


创建安装在/ tempdisk的4Mb tmpfs空间,然后将文件写入:

a5683fa9c570524b24096bfe7d2f7ab7.png

6fee3e5df48e69515c577212dc3b5f84.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值