目录
数据卷(Data Volumes)
- 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作。
容器和宿主机的数据共享
1.拉取centos镜像
docker pull centos:7
2.创建容器
宿主机目录/var/www 挂载到a1容器中的/data
注意:宿主机本地目录的路径必须使用绝对路径。如果路径不存在,Docker会自动创建相应路径。
ls /var/www/html
docker run -id --name a1 -v /var/www/html:/data centos:7 bash
#-v选项可以在容器内创建数据卷也会在宿主机创建目录
3.输入内容验证
docker exec -it a1 bash #进入容器
echo '123456' > /data/jlh.txt #输入内容到共享目录中
#宿主机上查看
cd /var/www/html
cat jlh.txt
经过宿主机,实现容器间的数据共享
1.创建a2容器,并且挂载同一个宿主机目录
宿主机目录/var/www 挂载到a2容器中的/mnt
docker run -id --name a2 -v /var/www/html:/mnt centos:7 bash
docker exec -it a2 bash
2.输入内容验证
#a2容器上输出
echo 'abcdef' > /mnt/zx.txt
#宿主机上查看
cd /var/www/html/
cat zx.txt
#a1容器上查看
cd /data/
cat zx.txt
挂载文件
1.创建a2容器,并且挂载文件
docker run -id --name a3 -v /var/www/html/zx.txt:/mnt/zx.txt centos:7 bash
docker exec -it a3 bash
cat /mnt/zx.txt
#宿主机共享目录
echo 'scj is shuaige!!' > /var/www/html/zx.txt
#a3容器共享目录下查看
cat /mnt/zx.txt
2.只读操作
docker run -id --name a4 -v /var/www/html/zx.txt:/mnt/zx.txt:ro centos:7 bash #ro代表只允许只读操作
数据卷容器
不经过宿主机,实现容器间的数据共享
- 如果需要在容器之间共享数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
1.创建a1容器作为数据卷容器
docker run -id --name a1 -v /data1 -v /data2 centos:7 bash
2.挂载a1容器的数据卷到新的容器a2,a3
#使用 --volumes-from 来挂载 a1 容器中的数据卷到新的容器
docker run -id --name a2 --volumes-from a1 centos:7 bash
docker run -id --name a3 --volumes-from a1 centos:7 bash
3.进入a1容器,并输入内容
docker exec -it a1 bash
echo 'jlh' > data1/zx1.txt
echo 'zx' > data2/zx2.txt
exit
4.进入a2 a3容器验证
#a2容器操作
docker exec -it a2 bash
ls data1
ls data2
#a3容器操作
docker exec -it a3 bash
ls data1
ls data2
容器互联
使用centos镜像
- 默认情况下docker容器重新创建后,对应的容器IP地址可能会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址
- 容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息
#创建并运行接收容器取名a4,使用--link选项指定连接容器以实现容器互联
docker run -id --name a4 --link a3:xy101 centos:7 bash #--link 容器名:连接的别名
docker exec -it a4 bash
ping a3
ping xy101
重启容器测试(重启后ip会发生改变)