• docker 挂载三种方式 以及区别


    volume: Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)

    bind mounts:可以存储在宿主机系统的任意位置
    tmpfs mounts:挂载存储在宿主机系统的内存中,不会写入宿主机的文件系统

    voulume  指定docker  挂载区域

    bind    是宿主机任意文件系统

    tmpfs  是临时挂载 放在内存

    volume  创建数据卷

    创建volume数据卷:docker volume create for_nginx  

    查看当前所有数据卷信息:docker volume ls
    上面一大堆名字为很长字符的数据卷为匿名数据卷,是因为之前创建容器的时候没有手动创建数据卷进行了文件挂载,Docker就会自动创建匿名数据卷。
    启动容器并指定数据卷:docker run -d -p 80:80 --mount type=volume , source=for_nginx,target=/usr/share/nginx/html nginx

    可以查看下容器具体信息: docker inspect (容器id或者名称)

    可以cd 到目录下 容器以及挂载到宿主机了

    我们在宿主机数据卷里新增一个a . html
    进入容器内部查看是否也增加了a.html文件:docker exec -it f7adebee03c2 /bin/bash

    浏览器IP/a. html可以直接访间到页面,证明数据卷挂载成功
    如果强制删除容器后,数据卷不会被删除,还是会保存在宿主机docker/volumes路径下

    bing mounts  (绑定数据卷)

    bind mounts可以将宿主机任意目录挂载到容器内
    将宿主机/opt目录挂载到容器内:docker run -d -p 80:80 --mounttype=bind , source=/opt ,target=/usr/share/nginx/html nginx
    进入容器查看nginx默认html页面:docker exec -it df4a184680be /bin/bash


    发现并没有nginx默认的index.html和50.html页面,但浏览器可以正常显示Welcome tonginx!
    注。如果你使用Bind mounts挂载宿主机目录到一个容器中的非空目录,那么此容器中的非空目录中的文件会被隐藏,容器访间这个目录时能够访间到的文件均来自于宿主机目录。

    三种场景

    volumes:
    多个运行容器间共享数据
    当Docker主机不确保具有给定的目录或文件
    备份、恢复、或将数据从一个Docker主机迁移到另一个Docker主机时
    bind mount:
    主机与容器共享配置文件(Docker默认情况下通过这种方式为容器提供DNS解析,通过将/etc/resolv .conf挂载到容器中)
    共享源代码或build artifacts(比如将Maven的target/目录挂载到容器中,每次在Docker主机中build Maven工程时,容器能够访间到那些rebuilt artifacts)
    当docker主机中的文件或目录结构和容器需要的一致时
    tmpfs mount:
    既不想将数据存于主机,又不想存于容器中时(这可以是出于安全的考虑,或当应用需要写大量非持久性的状态数据时为了保护容器的性能)。

    容器间通信方式   1  link 

    不需要用ip直接用容器名(服务名)ping
    docker exec -it tomcat02 ping tomcat01
    I
    上面的无法ping通!
    docker run -d -p --name tomcat03 --link tomcat02 tomcatdocker exec -it tomcat03 ping tomcat02
    此时就可以ping同通
    原理:
    docker exec -it tomcat83 cat /etc/hosts
    总结:

    --link就是在hosts配置中增加——个映射

    docker  network ls  docker  默认  bridge  、host(共享网络)  还有自定义

    用于2个容器互通 如果更多  需要加入桥接

    docker run -itd  --name tomcat01 --net bridge tomcat

    如下三个容器桥接的同一个网络

    自建的docker 网络 默认就是桥接

    docker network create mynet

    来是三个测试一下

    一般自定义网络  可以相互通信   

    c1 联通b1 不同网络之间怎么联通  如下 

    docker network connect mynet tomcat88

    不同网络下的容器也能互相连通,tomcat00是其他网络下的容器

  • 相关阅读:
    Android存储数据方式(转)
    Android实现双进程守护 (转)
    Android DOM、SAX、Pull解析XML(转)
    TCP/IP和Socket的关系(转)
    Socket通信原理和实践
    [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)
    内存堆和栈的区别
    hdu 1754 线段树
    hdu 1166 线段树
    zoj 3686 线段树
  • 原文地址:https://www.cnblogs.com/jasontarry/p/15516221.html
Copyright © 2020-2023  润新知