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

 更新时间:2024年04月14日 15:44:43   作者:暴躁小段额  
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容器时挂载写法

  • -v mysql:/val/lib/mysql 会识别为一个数据卷叫mysql
  • -v ./mysql:/val/lib/mysql 会识别为当前目录下的mysql目录

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

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

相关文章

  • docker的具名挂载与匿名挂载实现

    docker的具名挂载与匿名挂载实现

    本文主要介绍了docker的具名挂载与匿名挂载实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • docker machine安装极狐gitlab的过程详解

    docker machine安装极狐gitlab的过程详解

    这篇文章主要介绍了docker machine安装极狐gitlab的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • docker获取Let''s Encrypt永久免费SSL证书的方法

    docker获取Let''s Encrypt永久免费SSL证书的方法

    在本篇文章里小编给大家分享了一篇关于docker获取Let's Encrypt永久免费SSL证书的方法,以后需要的朋友们可以参考下。
    2021-01-01
  • 利用Docker 运行 python 简单程序

    利用Docker 运行 python 简单程序

    这篇文章主要介绍了利用Docker 运行 python 简单程序,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • 宝塔面板配合docker安装gogs的全过程

    宝塔面板配合docker安装gogs的全过程

    Gogs 是一款极易搭建的自助 Git 服务,如果想自己单独搭建属于自己私人的Git 服务,那么Gogs不容错过。这篇文章主要介绍了宝塔面板配合docker安装gogs,需要的朋友可以参考下
    2021-12-12
  • 解决docker拉取mysql镜像太慢的情况

    解决docker拉取mysql镜像太慢的情况

    这篇文章主要介绍了解决docker拉取mysql镜像太慢的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker中的run/cmd/entrypoint的区别详解

    docker中的run/cmd/entrypoint的区别详解

    Dockerfile中run、cmd和entrypoint都能够用于执行命令,针对每个命令给他介绍详细用途,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08
  • Docker默认网段的正确修改步骤

    Docker默认网段的正确修改步骤

    这篇文章主要给大家介绍了关于Docker默认网段修改的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 防火墙控制Docker端口开放与关闭

    防火墙控制Docker端口开放与关闭

    本文主要介绍了防火墙控制Docker端口开放与关闭,通过实例演示了如何配置防火墙规则来实现对Docker端口的控制,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 从源码构建docker-ce的过程分析

    从源码构建docker-ce的过程分析

    这篇文章主要介绍了从源码构建docker-ce的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12

最新评论