Docker:使用本地卷和tmpfs挂载

卷是为Docker容器保留数据的首选方法。

在本文中,将展示如何创建和使用卷来实现持久性,以及如何使用tmpfs来实现临时存储。

最简单的说,创建和安装由本地目录支持的卷如下所示:

# make host directory
mkdir -p /data

# create docker volume from host directory
sudo docker volume create --driver local --opt type=none --opt device=/data --opt o=bind --name=test

# mount volume within container
sudo 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。

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

继续并立即停止容器。

sudo docker stop alpine-voltest

但是,如果将本地卷安装到该容器目录,则可以控制该卷从该Web服务器传递的内容。

# create local host content
sudo mkdir -p /data/test
echo "<h1>This is mounted on the docker host at /data/test/index.html</h1>" | sudo tee /data/test/index.html

# create docker volume from host directory
sudo docker volume create --driver local --opt type=none --opt device=/data/test --opt o=bind --name=test

# volume details
sudo docker volume inspect test

# create container that uses test volume, mounts at web root
sudo 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”中的内容。



再次停止容器。

sudo docker stop alpine-voltest

# list volumes
sudo 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 /<dockerhome/volumes/newtest/_data

# 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临时磁盘空间


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


相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页