Docker_学习笔记系列之数据卷

docker 数据卷目的是实现宿主机和容器,容器与容器之间数据共享

特点:

数据双向共享,改变任何一方其他都会改变

容器停掉或删掉不会影响宿主机数据,保证了数据的持久化和安全性,是复制属性

如果仅仅容器之间数据共享,则所有容器删除数据也就没了,但只要有一个,数据就还在

支持映射多个目录,加多个-v即可

1.查看数据卷映射信息

docker volume ls
[root@python-node01 ~]# docker volume ls
DRIVER             VOLUME NAME
local               portainer_data

2.挂载的方式

# 1. 匿名挂载:只指定容器里的路径,不指定宿主机路径,默认会根据配置放到宿主机指定位置
docker -d --name test01 -v /container_path nginx
# 通过查看容器详细,可找到挂载到宿主机位置
docker inspect 容器id

# 2. 具名挂载:就是指定宿主机目录名字,默认在/var/lib/docker/volumes/名字
docker -d --name test02 -v 设定宿主机目录名字不是路径:容器路径 nginx

# 可通过docker volume inspect 查看目录挂载的详细信息
docker volume inspect 宿主机目录名字

# 3. 路径挂载
docker -d --name test03 -v 宿主机映射路径:容器映射路径 镜像名或id

# 扩展设定容器路径的容器里使用该目录的权限,如只读ro或可读写rw,默认可读写,在宿主机不受限制
docker -d --name test04 -v /temp/test04:/container_path:ro

3.宿主机与容器映射同步

# 1. 启动容器时直接使用
docker run -d --name 自定义容器名 -p 宿主机端口:容器端口 -v 宿主机映射路径:容器映射路径 镜像名或id

# 2. 通过dockerfile实现,内容如下
FROM centos
# 容器内目录挂载,默认在容器根目录下创建,如下面容器里挂载2个目录,下面为匿名挂载,没有指定外部路径
# 缺陷只能匿名挂载,没法指定宿主机路径
volume ["volume01","volume02"]

4.容器与容器映射同步

# 启动第一个容器
docker -d --name container01 -v /home/testpath:/container_path tomcat
# 启动第二个容器,并继承第一个容器的映射,因为继承所以第二个都不需要指定映射目录
docker -d --name container02 --volumes-from container02 tomcat

# 并不会因第一个容器删除,其他容器的数据丢失,备份机制

猜你喜欢

转载自blog.51cto.com/15127518/2685229