提供独立于容器之外的持久化存储
容器中的数据会随着容器的消失而消失,为了解决这个问题,产生了数据卷volume。
例子,比如说mysql容器,msyql中的数据应该是持久化的,故应该存储在volume中。volume还提供容器之间的共享存储
volume操作
容器和宿主机目录挂载的三种方式:
1.第一种方式:
# 运行容器内部地址nginx用来访问网页的地址/usr/share/nginx/html
docker run -d --name nginx -v /usr/share/nginx/html nginx
#给出容器的所有信息
docker inspect nginx
> Mounts.Source 宿主机目录 [如果是mac,则该路径不是mac上的实际路径,因为mac上运行docker是还有一层虚拟层,这是docker虚拟层中的路径,可以在docker中访问到]
> Mounts.Destination:/usr/share/nginx/html/ 容器目录
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty [这个路径才是mac本身挂载的目录]
2.第二种方式:
#将当前目录下的html子目录挂载到容器中中的/var/www/html
docker run -p 80:80 -d -v $PWD/html:/var/www/html nginx
3.第三种方式:
# 宿主机目录:$PWD/data docker目录:/var/mydata 容器名:data_container 基础镜像:ubuntu
docker create -v $PWD/data:/var/mydata --name data_container ubuntu
# -it表示使用交互的方式进入容器[默认ubuntu基础镜像没有服务]
docker run -it --volumes-from data_container ubuntu /bin/bash
#进入后执行mount,可以看到有/var/mydata目录的挂载信息
mount