一、Docker 数据卷
1、数据卷原理
将容器内部的配置文件目录,挂载到宿主机指定目录下
- 数据卷默认会一直存在,即使容器被删除
- 宿主机和容器是两个不同的名称空间,如果想进行连接需要用ssh,exec和attch也类似于ssh这种方式登录
- 在企业中ssh这种登录方式会比较危险,安全漏洞很大,尽量减少ssh这种,杜绝了频繁使用exec
- 因此使用数据卷的方式把容器内部的文件目录挂载到宿主机指定目录下进行修改,当容器里的文件频繁需要修改时,不需要登录进去,直接使用数据卷方式在宿主机指定的目录下进行修改即可,方便又安全。
2、数据卷的作用
- 数据卷是一个供容器使用的特殊目录,位于容器中,可以将宿主机目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响影响镜像,从而实现数据在宿主机与容器之间的迁移。
- 数据卷的使用类似于linu下对目录进行mount操作。
步骤
docker pull centos
先下载centos镜像
docker run -v /var/www:/data1 --name liuxu -it centos:7 /bin/bash
宿主机目录/var/www挂载容器中的/data1
在/var/www/data1中加点东西,在liuxu容器中也可以看到,可以使用name登陆,也可以使用ID
二、数据卷容器
数据卷容器作用
让两个容器实现数据共享
如果需要在容器之间共享一些数据,最简单的方法就是使用数据容器,数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载。
php–>mysql之间想要通信,通过socker
数据卷容器案例
创建数据卷容器
docker run -it --name test1 -v /data1 -v /data2 centos:7 bash
#创建容器并进入容器,并共享/data1 和/data2目录
echo "这是data1下面的文件" > /data1/test.txt
echo "这是data2下面的文件" > /data2/TEST.txt
#容器内创建两个测试文件
docker run -it --name test2 --volumes-from test1 centos:7 bash
#创建容器并进入,并且去读取test1容器共享的目录
cat /data1/test.txt
cat /data2/TEST.txt
#查看测试数据是否同步(可相互传输)
三、容器互联(centos 镜像)
- 容器互连通过容器的名称在容器间建立一条专门的网络通信隧道,
- 简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。
docker run -itd --name test1 centos:7 bash
docker run -itd --name test2 centos:7 bash
#创建两个容器
docker exec -it test1 /bin/bash
#进入到容器test1中
ping test2
#尝试ping test2,查看是否连通
docker exec -it test2 /bin/bash
#进入到容器test2
yum -y install net-tools
#下载工具
ifconfig
#查看ip
docker run -itd -P --name test3 --link test2:test2 centos:7 /bin/bash
#创建并运行就收容器取名为test3,使用--link选项指定链接容器,以实现容器的互连
//--link格式【容器名】:【链接的别名】
docker exec -it test3 /bin/bash
#进入到容器test3
ping test2
#查看是否可ping通
yum -y install net-tools
#下载工具
ifconfig
#查看ip
ping 172.17.0.5
#使用ip ping test2的ip