Docker -v 挂载主机目录到容器中(及数据卷容器)

这篇具有很好参考价值的文章主要介绍了Docker -v 挂载主机目录到容器中(及数据卷容器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简单挂载

  • 使用 Docker 的过程中,经常需要挂载主机上的目录或文件到 Docker 容器中,以实现数据的共享或持久化。而 docker run -v 命令便是用于挂载主机目录到 Docker 容器中的常用命令。

  • 在创建启动容器时,使用 -v 参数设置数据卷

    # 挂载单个
    $ docker run ... -v [主机目录]:[容器目录] [镜像名称]
    
    # 挂载多个
    $ docker run -v [主机目录1]:[容器目录1] -v [主机目录2]:[容器目录2] -v [主机目录3]:[容器目录3] [镜像名称]
    

    注意事项:

    • 目录必须是绝对路径

    • 如果目录不存在,会自动创建

    • 可以挂载多个数据卷,写多个 -v 就行

二、简单挂载案例

  • centos 举例挂载

    # 拉取最新 centos
    $ docker pull centos
    
    # 一般可以放在 root 目录下,这里为了测试,随便写个文件名 dzmtest 作为效果区分
    $ docker run -it --name dzm -v /dzmtest/data:/dzmtest/data_container centos /bin/bash
    
  • 进入容器后,查看容器目录

    # 或者 $ ls -l
    $ ls
    # dzmtest 文件夹就被创建了,里面还有个 data_container 文件夹
    bin  dev  dzmtest  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
  • 查看宿主机目录,需要回到宿主机最外层

    # 或者 $ ls -l
    $ ls
    # 需要通过 $ cd .. 回到宿主机文件最外层,根目录,会发现创建好了 dzmtest,里面还有个 data 文件夹
    Docker  bin  boot  dev  dzmtest  etc  home  init  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var
    
  • 测试数据同步功能,在宿主机(/dzmtest/data)或容器(/dzmtest/data_container)内添加文件,或修改文件内容都会互相同步。

    # 或 $ cd /dzmtest/data_container
    $ cd /dzmtest/data
    
    # 随便创建一个文件
    $ touch dzm.txt
    

    如果创建文件报错 touch: cannot touch 'dzm.txt': Permission denied 是没有权限,加个权限就行。

    如果报错 -bash: cd: data/: Permission denied 也是一样,加个最高权限就行了。

    # 回到上层文件夹
    $ cd ..
    
    # 对 data 文件添加权限
    # chmod 修改权限指令
    # -R 对目前目录下的所有档案与子目录进行相同的权限变更
    # 777 是所有用户都拥有最高权限
    $ sudo chmod -R 777 ./data/
    

    然后再次执行创建文件命令,就能创建成功了

    dengzemiao@DESKTOP-D06B2J2:/dzmtest/data$ ls
    # 宿主机上文件就创建好了,然后去容器内的绑定文件夹内查看下是否存在文件
    dzm.txt
    
    [root@037524b9fb04 /]# cd dzmtest/data_container/
    [root@037524b9fb04 data_container]# ls
    # 容器内也存在同样的文件了,这样就实现了共享
    dzm.txt
    
  • 举例挂载多个目录

    # 通过 \ + 回车进行换行输入
    $ docker run -it --name dzm \
    > -v /dzmtest/data1:/dzmtest/data1 \
    > -v /dzmtest/data2:/dzmtest/data2 \
    > centos /bin/bash
    

三、数据卷容器

  • 如果是多容器数据共通,那么按上面的办法就是每个容器都关联宿主机的一个文件夹,这样就能多容器数据共通

    还有种方式就是 数据卷容器,就是创建一个容器专门挂载宿主机文件夹,然后其他容器关联到这个容器即可。

    docker容器添加挂载目录,Docker,docker,容器,运维

    1、创建启动 c3 数据卷容器,使用 -v 设置数据卷

    # -v /volume 这种写法会在容器内创建一个 /volume 目录,然后 docker 会在宿主机上自动分配一个目录作为绑定目录
    $ docker run -it --name=c3 -v /volume centos:7 /bin/bash
    
    # 执行命令后,如何查看容器自动分配的宿主机绑定目录呢
    $ docker inspect c3
    [
        {
            ......
            "HostConfig": {
                // 如果指定数据卷目录,这里会列出绑定信息
                "Binds": null,
                ......
            },
            ......
            // 挂着信息
            "Mounts": [
                {
                    "Type": "volume",
                    "Name": "8d89f84aa486fcf706e180e6aa17649929147bdbc32e8aa3391b4dffdce27d09",
                    // 宿主机中的目录
                    "Source": "/var/lib/docker/volumes/8d89f84aa486fcf706e180e6aa17649929147bdbc32e8aa3391b4dffdce27d09/_data",
                    // 容器中的目录
                    "Destination": "/dzmtest1",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
            ],
            .....
        }
    ]
    dengzemiao@DESKTOP-D06B2
    

    2、创建启动 c1 c2 容器,使用 --volumes-from 设置数据卷容器

    $ docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
    $ docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
    

    3、然后就在 c1 c2 容器中正常增删改文件,实现互通了,同时也可以单独访问 c3 数据卷容器做处理。文章来源地址https://www.toymoban.com/news/detail-694237.html

到了这里,关于Docker -v 挂载主机目录到容器中(及数据卷容器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当docker中容器运行时,如何将目录和宿主机进行挂载

    容器已运行,但还想挂载文件 容器已经运行起来了,突然想给容器的目录进行挂载,通常是在运行容器时加上 -v  命令 进行挂载。运行起来的容器想挂载文件夹可以通过修改容器在宿主机的配置文件进行解决。 在配置文件中加入新的挂载 1.查看容器存放目录 2.进入该目录

    2024年01月25日
    浏览(37)
  • 【Docker】数据卷挂载以及宿主机目录挂载的使用

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月16日
    浏览(34)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(33)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(51)
  • docker搭建nginx并且挂载宿主机目录

    1、安装docker,这里就不赘述了 2、查看nginx版本 3、设置nginx对外的挂载目录 4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下 5、拉取相应的docker镜像 6、搭建nginx服务器 7、搭建完成之后查看容器的运行状态 8、至此,nginx就搭建完成了!!

    2024年02月11日
    浏览(31)
  • Docker之宿主机与容器之间的文件复制与挂载

    宿主机与容器之间的文件挂载与复制 1、从宿主机复制到容器命令格式为:       docker cp 宿主机的本地地址 容器名/容器ID:容器路径  先在宿主机里面创建一个666.txt的文件,然后docker cp 命令把文件复制到容器中。 2、从容器复制到宿主机命令格式:      docker cp 容器名字

    2024年02月13日
    浏览(46)
  • docker cp命令: 主机和Docker容器之间复制文件或目录

    docker cp命令是用于在主机和Docker容器之间复制文件或目录的命令。可以从容器复制文件到主机,也可以从主机复制文件到容器。 使用docker cp命令的基本语法如下: 例如,要将容器内的文件复制到主机上: 要将主机上的文件复制到容器内: 复制目录也是一样的命令 备注 :

    2024年04月29日
    浏览(29)
  • 【Docker】Docker挂载和修改容器中的目录及配置文件的若干种方式

    我们知道,Docker相当于提供了一个 独立于宿主机的运行环境。当我们使用Docker部署了中间件例如nginx的容器后,一般都是需要修改配置文件的。那么我们想到的第一个方法就是进入容器去修改[1]。 1.进入容器内修改 首先我们需要有一个已经启动的容器。pull image后通过run-d -

    2024年02月08日
    浏览(31)
  • 解决docker通过volumes挂载文件,宿主机修改后容器内不同步,重启服务才能同步

    将文件的权限改为777,即 chmod 777 filename 。 详细解释在该文章: https://huaweicloud.csdn.net/633114e5d3efff3090b51a5a.html 说明: 这是由于linux系统文件挂载机制导致的。 docker通过volumes挂载文件到容器中,有以下两种方式: 1、挂载目录 2、挂载具体文件:并不是挂载了某个文件的路径,

    2024年03月10日
    浏览(48)
  • Docker 对已经启动的容器添加目录映射

    需要在测试环境先进行试验,操作不当可能导致容器无法启动!!! 操作系统:CentOS 7.9.2009 x86_64 Docker 版本:20.10.12 使用 Docker 进行部署 TDengine 数据库,需要每天进行数据备份,但是创建该容器时没有添加目录映射到宿主机,如果容器异常可能导致数据无法恢复。 关闭 doc

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包