docker 挂载三种方式 以及区别

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

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

docker  挂载三种方式 以及区别

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或者名称)

docker  挂载三种方式 以及区别

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

docker  挂载三种方式 以及区别

我们在宿主机数据卷里新增一个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

docker  挂载三种方式 以及区别


发现并没有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(共享网络)  还有自定义

docker  挂载三种方式 以及区别

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

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

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

docker  挂载三种方式 以及区别

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

docker network create mynet

docker  挂载三种方式 以及区别

来是三个测试一下

docker  挂载三种方式 以及区别

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

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

docker network connect mynet tomcat88

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