使用Docker将容器目录挂载到主机上的实现方法

 更新时间:2022年05月29日 09:35:42   作者:愿许浪尽天涯  
本文主要介绍了使用Docker将容器目录挂载到主机上的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、基本介绍

这里我们主要介绍 Docker 里的一个命令,叫做 --mount,其本质上来说和 --volume 命令并没有太大区别,因为这两个命令都是用来给容器提供一个挂载目录。唯一的区别便是,容器的挂载类型不同,那么效果也会有所不同。

容器的挂载类型:

  • bind:将宿主机的指定目录挂载到容器的指定目录,以覆盖的形式挂载(这也就意味着,容器指定目录下的内容也会随着消失)
  • volume在宿主机的 Docker 存储目录下创建一个目录,并挂载到容器的指定目录(并不会覆盖容器指定目录下的内容)

在有些时候,由于容器内的目录有着特殊作用,并不能以覆盖的形式进行挂载。但又想挂载到宿主机上,这时我们便可以使用 volume 类型的挂载方式。像我们上面所说的 --mount--volume 命令都是支持以这两种类型的方式挂载,无非就是配置稍有不同。

两种命令使用 bind 类型挂载区别:当宿主机上指定的目录不存在时,我们使用 --volume 命令挂载时,便会自动的在宿主机上创建出相应目录,而我们要是使用 --mount 命令来挂载,便会输出 `` 报错信息。

二、将容器目录挂载到主机

1)使用 --volume 命令实现 bind 类型的挂载

[root@k8s-master01 ~]# docker run -d -it --name zhangsan \
-v /zhangsan:/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# echo "Hello World" > /zhangsan/index.html
[root@k8s-master01 ~]# docker exec -it zhangsan /bin/bash
root@3cad299c93aa:/# cd /usr/share/nginx/html/
root@3cad299c93aa:/usr/share/nginx/html# ls
index.html
root@3cad299c93aa:/usr/share/nginx/html# curl 127.0.0.1

在这里插入图片描述

可以看到,当我们使用 bind 类型的挂载时,容器内指定的目录原有内容会被覆盖。

2)使用 --mount 命令实现 bind 类型的挂载

[root@k8s-master01 ~]# docker run -d -it --name wangwu \
--mount type=bind,source=/zhangsan,destination=/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it wangwu /bin/bash
root@474cf5ddd29f:/# cd /usr/share/nginx/html/
root@474cf5ddd29f:/usr/share/nginx/html# ls
index.html
root@474cf5ddd29f:/usr/share/nginx/html# curl 127.0.0.1

在这里插入图片描述

我们上面指定 type=bind 类型的原因是因为 --mount 命令默认挂载的类型就是 volume 类型,所以需要指定。

--mount 命令挂载格式:

  • bind 挂载类型:--mount [type=bind] source=/path/on/host,destination=/path/in/container[,...]
  • volume 挂载类型:--mount source=my-volume,destination=/path/in/container[,...]

3)使用 --volume 命令实现 volume 类型的挂载

[root@k8s-master01 ~]# docker run -d -it --name volume \
-v zhangsan:/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it volume /bin/bash
root@dced26ccb8f0:/# cd /usr/share/nginx/html/
root@dced26ccb8f0:/usr/share/nginx/html# ls
50x.html  index.html

在这里插入图片描述

4)使用 --mount 命令实现 volume 类型的挂载

[root@k8s-master01 ~]# docker run -d -it --name mount \
--mount source=mount,destination=/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it mount /bin/bash
root@7e63ca69f135:/# cd /usr/share/nginx/html/
root@7e63ca69f135:/usr/share/nginx/html# ls
50x.html  index.html

在这里插入图片描述

查看宿主机的挂载目录

在这里插入图片描述

其实,使用 bind 或是 mount 类型的挂载方式,区别主要就是在于有 / 和没 /,有 / 就会挂载到宿主机的指定目录,没有 / 则是会挂载到宿主机 Docker 所在的目录中。

到此这篇关于使用Docker将容器目录挂载到主机上的实现方法的文章就介绍到这了,更多相关Docker将容器目录挂载到主机上内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker如何查看容器/删除(所有)容器/删除镜像

    docker如何查看容器/删除(所有)容器/删除镜像

    这篇文章主要介绍了docker如何查看容器/删除(所有)容器/删除镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • docker-compose部署mysql全过程

    docker-compose部署mysql全过程

    这篇文章主要介绍了docker-compose部署mysql全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2016-06-06
  • docker网络,docker-compose network问题

    docker网络,docker-compose network问题

    这篇文章主要介绍了docker网络,docker-compose network问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 详解Docker守护进程的配置及日志

    详解Docker守护进程的配置及日志

    这篇文章主要介绍了详解Docker守护进程的配置及日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 迁移变更Docker默认数据存储目录的步骤详解

    迁移变更Docker默认数据存储目录的步骤详解

    Docker安装的默认数据目录为/var/lib/docker,但是如果/目录挂载的磁盘空间不够,就需要迁移docker数据到其他目录,接下来本就给大家介绍迁移变更Docker默认数据存储目录的操作步骤,需要的朋友可以参考下
    2023-12-12
  • 生产环境中安全运行Docker容器

    生产环境中安全运行Docker容器

    本文是一篇译文,给大家详细介绍如何在生产环境中安全运行Docker容器,有需要的小伙伴可以参考下
    2017-01-01
  • docker容器源码部署httpd用存储卷部署网站(推荐)

    docker容器源码部署httpd用存储卷部署网站(推荐)

    这篇文章主要介绍了docker容器源码部署httpd用存储卷部署网站,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Docker磁盘空间清理的方法实现

    Docker磁盘空间清理的方法实现

    在使用Docker的过程中,系统会逐渐积累一些无用的垃圾文件,占据宝贵的磁盘空间并影响系统性,本文主要介绍了Docker磁盘空间清理的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Docker 创建centos容器集群并实现远程登录功能

    Docker 创建centos容器集群并实现远程登录功能

    这篇文章主要介绍了Docker 创建centos容器集群并实现远程登录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Docker移除镜像几种不同的方法实战记录

    Docker移除镜像几种不同的方法实战记录

    在Docker实战中,合理删除不再需要的镜像,有助于释放宝贵的磁盘空间,删除Docker镜像可以通过多种方式,包括删除单个镜像、强制删除正在使用的镜像、删除未被任何容器引用的所有镜像以及删除所有镜像等,需要的朋友可以参考下
    2024-11-11

最新评论