Docker-数据卷及容器互联
简介
方便查看容器内产生的数据
多容器间实现数据共享
例如:需要给多个容器中的网站站点上传网页内容时,可以高效的部署网页
Docker数据卷(宿主机与容器之间实现数据共享)
概述
数据卷:数据卷就是在宿主中可以在容器之间进行共享和重用的一系列和文件和文件夹,通过docker run -v命令可以将数据卷挂载到对应的容器目录空间,进行文件读取,容器卷特性如下:
数据卷可以在容器之间共享和重用;
数据卷修改会立马生效;
对数据卷的更新,不会影响镜像;
数据卷会一直存在,直到没有容器使用
部署
docker pull centos:7
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 8652b9f0cb4c 3 months ago 204MB
docker run -v /var/abc:/data1 --name test -it centos:7 /bin/bash /#宿主机目录/var/www挂载容器中的/data1
ls /
cd data1/
touch a.txt #创建测试文件
exit
返回宿主机进行查看
cd /var/abc
数据卷容器(容器与容器之间实现数据共享)
概述
数据卷容器就是一个普通的容器。挂载web容器中的数据卷到新的容器。接数据卷,已经存在一个挂载了数据卷的容器;由于数据卷在容器之前是可以共享的,所以此时如果存在其他容器通过==docker run --volumes-from [容器别名]==命令挂载到该容器上,则该容器可以被称之为数据卷容器,其主要功能是提供数据卷供其他容器挂载。当数据卷容器宕机后,并不会造成数据卷的回收卸载,数据卷会继续挂载在其他容器中。当全部挂载该数据卷的容器全部宕机后,该数据卷才会卸载。
部署
docker run --name txt -v /data1 -v /data2 -it centos:7 /bin/bash #创建数据卷容器txt提供两个对外暴露的挂载点
docker run -it --volumes-from txt --name 666 centos:7 /bin/bash #新容器挂载数据卷容器666
[root@dc5c3eb1bbfb /]# cd data1 #次终端创建测试文件
[root@dc5c3eb1bbfb data1]# touch 666.txt
[root@dc5c3eb1bbfb data1]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 9 08:56 666.txt
[root@dc5c3eb1bbfb /]# cd ..
[root@dc5c3eb1bbfb /]# cd data2
[root@dc5c3eb1bbfb data2]# touch 333.txt
[root@dc5c3eb1bbfb data2]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 9 08:56 333.txt
exit
主终端查看
docker exec -it 52beeea72742 /bin/bash
[root@52beeea72742 /]# cd data1
[root@52beeea72742 data1]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 9 08:56 666.txt
[root@52beeea72742 data1]# cd ..
[root@52beeea72742 /]# cd data2
[root@52beeea72742 data2]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 9 08:56 333.txt
网络通信
docker 提供了映射容器端口到宿主机和容器互联机制来为容器提供网络服务。
端口映射
Docker 提供端口映射机制来将容器内的服务提供给外部网络访问,实质上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务。
ocker run -d -P nginx #-P随机生成端口号
docker run -d -p 888:80 nginx #-p指定端口号(宿主机端口:容器端口)
容器互联
docker images
docker ps -a
docker run -itd --name hei centos:7 /bin/bash #创建并运行hei容器,端口号自动映射
docker run -itd --name ha --link hei:hei centos:7 /bin/bash #创建并运行ha容器,链接到hei和其通信
docker ps -a
docker exec -it f9e5e393a7aa /bin/bash #进入ha容器ping hei
ping hei