容器数据卷使用
1、什么是容器数据卷
docker的理念就是把应用和环境打包成一个镜像。如果数据都在容器中,那么删除容器,数据就会丢失!这就有了数据持久化的需求。
比如MySQL数据库,如果容器删了,那么容器中的数据也就没有了,这就需要将MySQL的数据库存储在本地!!
容器之间可以有数据共享的技术!Docker容器中产生的数据可以同步到本地!!这就是卷技术!目录的挂载,将容器内的目录,挂载到服务器上面!
总结:容器的持久化和同步操作!容器间也是可以数据共享的。
2、使用数据卷
直接使用命令挂载(-v)
docker run -it -v 宿主机目录:容器内目录 /bin/bash
测试
docker run -it -v /home/ceshi:/home centos /bin/bash
1、在宿主机和容器中各自创建一个文件
2、容器起来时我们可以通过docker inspect 容器id 查看具体情况
3、退出关闭容器,在宿主机挂载目录下创建文件,在进入容器中查看是否同步
3、数据卷容器的同步操作
1、创建数据卷容器
docker run --name mx1 -v /data1 -v /data2 -it centos /bin/bash
2、新容器挂载数据卷容器mx1
docker run -it --volumes-from mx1 --name zx1 centos /bin/bash
4、端口映射
docker run -d -P httpd:centos
docker run -d -p 49280:80 httpd:centos
docker ps -a
-p:指定端口
-P:随机端口,从32768开始
端口映射在前面的文章Docker的安装部署(nginx、tomcat、es+kibana)的Docker安装Nginx中有过介绍,就不再过多演示了!!
5、容器互联(使用centos镜像)
[root@localhost ~] # docker run -itd -P --name web11 centos:7 /bin/bash
//创建并运行容器取名web1,端口号自动映射
[root@localhost ~] # docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash
//创建并运行容器取名web2,链接到web1和其通信进web22容器
//--link name:alias --link容器名:别名
[root@localhost ~] # docker exec -it 9092a4c8aa97 /bin/bash
[root@9092a4c8aa97 /]# ping web11
PING web11 (172.17.0.3) 56(84) bytes of data.
64 bytes from web11 (172.17.0.3): icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from web11 (172.17.0.3): icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from web11 (172.17.0.3): icmp_seq=3 ttl=64 time=0.035 ms
64 bytes from web11 (172.17.0.3): icmp_seq=4 ttl=64 time=0.038 ms
64 bytes from web11 (172.17.0.3): icmp_seq=5 ttl=64 time=0.037 ms
64 bytes from web11 (172.17.0.3): icmp_seq=6 ttl=64 time=0.038 ms
64 bytes from web11 (172.17.0.3): icmp_seq=7 ttl=64 time=0.036 ms
^C
--- web11 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 5999ms
rtt min/avg/max/mdev = 0.035/0.046/0.104/0.024 ms