zoukankan      html  css  js  c++  java
  • Docker数据挂载

    Docker数据管理

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

    • 数据卷(Volumes)
    • 挂载主机目录(Bind mounts)

    img

    数据卷

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

    • 数据卷可以在容器之间共享和重用
    • 对数据卷的修改会立马生效
    • 对数据卷的更新不会影响镜像
    • 数据卷默认会一直存在,即使容器被删除

    注意:数据卷的使用,类似于Linux下目录的使用或文件进行mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。

    Docker中提供了两种挂载方式,-v 或—mount,推荐使用 —mount,因为—mount 更简洁易懂。

    创建一个数据卷:

    docker volume create my-volume
    

    查看指定数据卷的信息:

    docker volume inspect my-volume
    

    启动一个挂载数据卷的容器:
    在用 docker run 命令的时候,使用—mount 来将数据卷挂载到容器,在一次 docker run 中可以挂载多个数据卷。

    docker run --name test-web -d -p 8080:8080 
    -v my-volume:/webapp 
    test-web:latest
    
    # 或者
    docker run --name test-web -d -p 8080:8080 
    --mount source=my-volume,target=/webapp 
    test-web:latest
    

    删除数据卷:

    docker volume rm my-volume
    

    数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。
    如果需要在删除容器的同时移除数据卷,可以在删除容器的时候使用docker rm -v 这个命令。
    无主的数据卷可能会占据很多空间,可以使用以下命令进行清理:

    docker volume prune
    

    挂载主机目录

    使用 —mount 可以指定挂载一个本地主机的目录到容器中去:

    docker run --name test-web -d -p 8080:8080 
    --mount type=bind,source=/src/webapp,target=/opt/webapp 
    test-web
    

    上面的命令加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录,这个功能在测试时十分方便,比如用户可以放置一些程序到本地目录,来查看容器是否正常工作。

    本地目录的路径必须是绝对路径。
    使用 -v 参数时如果本地目录不存在,Docker会自动创建
    使用 —mount 参数时,如果本地目录不存在,Docker会报错
    Docker挂载主机目录的默认权限是读写,用户也可以通过增加 readonly 指定为只读

     

  • 相关阅读:
    POJ-1189 钉子和小球(动态规划)
    POJ-1191-棋盘分割(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
  • 原文地址:https://www.cnblogs.com/coding-diary/p/12018589.html
Copyright © 2011-2022 走看看