• 将Docker主机数据挂在到容器中


    dcoker 提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts, tmpfs。
    volumes: Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
    bind mounts: 存储在宿主机系统的任意位置,主要是将宿主机上的某个文件目录挂在到docker下供数据存储。
    tmpfs:挂载存储在宿主机系统的内存中,不会写入宿主机的文件系统。

    管理卷:
    docker volume create tomcat8081
    docker volume inspect tomcat8081

    用卷创建一个容器(系统例子):
    docker run -itd --name=ng01 -p 91:80 --mount src=ng01,dst=/usr/share/nginx/html nginx

    或者:

    docker run -itd --name=ng01 -p 89:80 -v ng01:/usr/share/nginx/html nginx

    如果对应到自己的容器中,就要根据镜像查找对应的默认安装目录,并设置要保存的对应目录

    比如tomcat的默认安装路径为

    /usr/local/tomcat
    那么,我们创建容器的语句为
    docker run -itd --name=tomcat8081 -p 8081:8080 --mount src=tomcat8081,dst=/usr/local/tomcat/webapps tomcat

    有时候我们可能会用到挂载多个数据卷的情况,使用命令:

    docker run -itd --name=tomcat8082 -p 8082:8080 --mount src=volume_Name1,dst=/usr/local/tomcat/webapps --mount src=volume_Name2,dst=/usr/local/tomcat/conf tomcat

    #进入container控制台命令

    docker exec -it tomcat8082 /bin/bash  #tomcat8082为容器名称

    #不指定卷会自动创建
    docker run -itd --name=ng01 -p 90:80 --mount src=,dst=/usr/share/nginx/html nginx

    创建的卷所在位置:

    /var/lib/docker/volumes/

    删除卷:
    docker volume rm ng01

    删除容器:
    docker container stop ng01
    docker container rm ng01

    bind形式绑定
    docker run -itd --name=ng01 --mount type=bind,src=/root/app,dst=/usr/share/nginx/html nginx

    或者

    docker run -itd --name=ng -p 88:80 -v /root/app:/usr/share/nginx/html nginx

    查看容器详情

    docker inspect ng01

    #如果源文件、源目录不存在,不会自动创建,会报错。
    #挂载目标在容器中非空目录,则该目录现有内容将被隐藏
     

    volume特点:

    1、多个运行容器之间的共享数据,多个容器可以同时挂载相同的卷。

    2、当容器停止或被移除时,该卷依然存在

    3、当明确删除卷时,卷才会被删除

    4、将容器的数据存储在远程主机或其他存储

    5、将数据从一台docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes

    )

    bind mount 特点:

    1、从主机共享配置文件到容器,默认情况下,挂载主机/etc/resolv.conf到每个容器,提供dns解析

    2、在docker主机上的开发环境和容器之间共享源代码。 例如,将maven target目录挂载到容器中, 每次在docker主机上构建maven项目时,容器都可以访问构建的项目包。

    3、当docker主机的文件或目录结构保证与容器所需的绑定挂载一致时

  • 相关阅读:
    IDE配置 Clion搭建算法竞赛用的IDE
    [Atcoder]AtCoder Beginner Contest 234 题解
    react通过setupProxy处理跨域
    ES6追加方法
    记疫情在家爬表情包 Python
    shell 判断条件,退出程序
    test
    ggplot2 分面 fact_grid() facet_wrap()
    YuLabSMU 截断部分坐标轴 留些空白
    ggplot2 注释文本到图所展示的数据上
  • 原文地址:https://www.cnblogs.com/salmonLeeson/p/11680234.html
Copyright © 2020-2023  润新知