容器存储实验指南:volume与bindmount操作详解

需积分: 0 0 下载量 52 浏览量 更新于2024-08-05 收藏 273KB PDF 举报
本篇文档是关于HCIP-CloudComputing-ContainerV1.0实验指导手册,主要针对Docker容器存储进行深入实践。实验分为两部分,即volume和bindmount,旨在探讨容器与宿主机之间的数据共享。 1.1 容器存储 1.1.1 volume 在这个环节,首先通过以下步骤创建一个名为`httpd`的容器并挂载一个名为`/usr/local/apache2/htdocs`的volume: - 步骤1: 使用`docker run`命令创建容器,并指定端口8080对外暴露,同时挂载host的目录到容器的web目录: ``` docker run -d --name httpd -p 8080:80 -v /usr/local/apache2/htdocs:/usr/local/apache2/htdocs httpd ``` - 步骤2: 使用`docker volume ls`检查已有的volumes。 - 步骤3: 通过`docker inspect`获取容器详情,可以看到volume挂载信息及对应的volume路径。 - 步骤4: 在宿主机上通过HTTP访问`http://127.0.0.1:8080`验证数据同步。 - 步骤5: 更新容器内的`index.html`文件内容,验证数据同步:`echo "update the index" > index.html` - 步骤6: 再次访问container的web服务,确认数据更新同步到volume。 - 步骤7: 强制删除容器后,数据仍在volume中,证明数据持久化。 1.1.2 bindmount 接下来,通过bindmount实现更精细的数据共享: - 步骤1: 创建一个只读的bindmount,将`/root/htdocs`目录挂载到名为`httpd1`的容器的web目录: ``` docker run --name httpd1 -d -p 8081:80 -v /root/htdocs:/usr/local/apache2/htdocs:ro httpd ``` - 步骤2: 检查容器挂载信息,确认Type为bind。 - 步骤3: 修改宿主机上的`/root/htdocs/index.html`文件,容器内的数据会同步更新,因为是只读挂载。 - 步骤4: 尝试在容器内更新`index.html`,会收到read-only的提示,因为挂载是只读的。 通过这些实验,学习者能够理解Docker的volume和bindmount功能在容器数据共享中的作用,以及它们的权限控制机制。volume提供持久化的存储,而bindmount则提供了更灵活的文件系统级别共享,但需要注意数据写入的限制。通过这两个方法,容器可以在宿主机之间或与外部服务进行数据交换,实现应用和服务的隔离与可移植性。