docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker数据卷和挂载目录

Docker数据卷和挂载目录的使用

作者:暴躁小段额

docker 在容器中管理数据主要有两种方式,包括数据卷和挂载主机目录,本文主要介绍了Docker数据卷和挂载目录的使用,具有一定的参考价值,感兴趣的可以了解一下

docker 在容器中管理数据主要有两种方式:

- 数据卷( Volumes )

- 挂载主机目录( Bind mounts )

准备

删除容器

docker rm -f $(docker ps -aq)

 创建并运行一个容器

方法一
docker run -itd \
--name t1 \
-p 8080:8080 \
--mount source=v1,target=/usr/local/tomcat/webapps \
tomcat:8.5.20
方法二
docker start c1
docker exec -it c1 bash

数据卷(Volumes)

挂载和数据卷的区别:数据卷和替换整个目录而挂载只会替换一个文件夹或者一个文件,所以挂载的使用性更高;数据卷替换所有文件后可能导致tomcat 或者 mysql无法使用 因为配置文件被全部替换

为了很好的实现数据保存和数据共享, Docker 提出了 Volume 这个概念,简单的说就是绕过默认的联合

文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS ,可以提供很多有用的特性:

创建数据卷

docker volume create v1

查看所有数据卷

docker volume ls

查看数据卷信息

docker volume inspect v1

删除一个 volume

docker volume rm v1

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器, Docker 不会在容器被删除后自动

删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷

可能会占据很多空间,所以要及时删除 .

挂载数据卷

在用 docker run 命令的时候,使用 -- mount 标记来将 数据卷 挂载到容器里。在一次 docker

run 中可以挂载多个 数据卷 。

docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称

实际例子

docker run -it \
--name c1 \
--mount source=v1,target=/testdir \
centos

最好是通过 run 而非 create/start 创建启动容器, create/start 命令创建启动容器后,再挂载数据卷

相当麻烦,要修改很多配置文件,但并非不可以

加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行

输入,直到读到结束符,如回车

如果数据卷不存在,docker会自动创建

如果容器上目录不存在, docker会自动创建

查看数据卷的具体信息

docker inspect name

docker inspect v1

虚拟机端口映射

通过虚拟机端口映射可在虚拟机中运行tomcat,在本机访问tomcat端口

docker run -itd \
--name t1 \
-p 8080:8080 \
--mount source=v1,target=/usr/local/tomcat/webapps \
tomcat:8.5.20

虚拟机要开放端口
firewall-cmd --zone=public --add-port=8080/tcp

挂载目录(Bind mounts)

soft直接将webapps替换了
-v 可以挂载目录
-v 还可以单独挂载文件

挂载目录

挂载一个目录也是文件夹,先创建一个soft目录,mkidr soft

docker run -itd \
--name t1 \
-v /soft/usr/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.20

挂载文件

docker run -itd \
--name t1 \
-v /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.20

想实现远程登录到容器内部的tomcat
实现在线部署项目

需要放入tomcat的用户信息 tomcat-user.xml 文件中
还要允许外部访问 webapps/manager/META-INF/context.xml

需要提前vi编辑tomcat-users.xml 文件,编辑用户信息admin;

删除context.xml 文件中的部分内容

部署在线项目

docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.20

注:mysql nginx的配置文件都要通过挂载的形式

二者区别

数据卷挂载适合多个容器共享数据,而目录挂载适合单个容器与主机之间进行数据交换。

(1)注意二者写法上的区别,例如在实例化MySQL容器时挂载写法

(2)当实例化容器时,应查阅官方镜像文档,是否需要配置目录映射

到此这篇关于Docker数据卷和挂载目录的使用的文章就介绍到这了,更多相关Docker数据卷和挂载目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文