docker有一个很明显的问题, 关闭并启动容器, 其数据不受影响, 但是删除docker 容器, 则其改变将会全部消失。
数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于linux下对目录进行的mount操作。
docker run -itd -v
-v 绑定一个卷
//单容器配置:
docker run -itd -v /opt/test:/data --name test centos:7
docker exec -it test /bin/bash

//两个容器挂载同一目录:
docker run -itd -v /opt/test:/data2 --name test2 centos:7
docker exec -it test2 /bin/bash

其实就是挂载了同一个目录,数据都是同一个。
#创建一个容器作为数据卷容器
docker run -it --name test1 -v /data1 -v /data2 centos:7 bash #创建并进入容器
echo "this is test02 file" > /data1/test.txt #容器内创建测试文件1
echo "THIS IS TEST2 FILE" > /data2/TEST.txt #容器内创建测试文件2
#使用--volumes-from来挂载test2容器中的数据卷到新的容器
docker run -it --name test2 --volumes-from test1 centos:7 bash #创建并进入容器
cat data1/test.txt #查看测试数据是否同步
cat data2/TEST.txt

容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。
#创建并运行源容器取名web1
docker run -itd -P --name test1 centos:7 /bin/bash
#创建并运行接收容器取名web2,使用--link选项指定连接容器以实现容器互联
docker run -itd -P --name test2 --link test1:test1 centos:7 /bin/bash #--link 容器名:连接的别名
#进web2 容器, ping test1
docker exec -it test2 bash
ping test1

cker exec -it test2 bash
ping test1
[外链图片转存中...(img-s9c99Usk-1663501649469)]