1.数据卷
将宿主机目录挂载到容器目录。
数据卷特点:
在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据就会拷贝到容器中。
数据卷可以在容器直接共享和重用。
可以直接对数据卷里的内容进行修改。
数据卷的变化不会影响镜像的更新。
卷会一直存在,即使挂载数据卷的容器已经删除。
示例:
docker run -d --name web01 -v /container_data/web:/data Ubuntu
注:/container_data/web 为宿主机目录,/data 是容器中目录,目录不存在会自动创建。
如果你在主机的/home/user
目录下执行这个Docker命令,那么/container_data/web
就等同于/home/user/container_data/web
。确保指定的路径存在,并且有适当的权限供Docker容器进行读写操作。
2 容器数据卷
docker run -d -v /data --name=web01 ubuntu
docker run -d --name web02 --volumes-from web01 ubuntu
你提供的两个Docker命令是用于创建两个容器的。让我们逐个解释它们:
第一个命令:
docker run -d -v /data --name=web01 ubuntu
-d
: 在后台运行容器。-v /data
: 创建一个匿名数据卷并将其挂载到容器的/data
目录。这是一个具有持久性的卷。--name=web01
: 指定容器的名称为web01。ubuntu
: 使用Ubuntu镜像启动容器。
这个命令的目的是创建一个名为web01的后台运行的容器,该容器使用Ubuntu镜像,并且在容器内创建了一个匿名数据卷挂载到
/data
目录。第二个命令:
docker run -d --name web02 --volumes-from web01 ubuntu
-d
: 在后台运行容器。--name web02
: 指定容器的名称为web02。--volumes-from web01
: 通过指定要挂载的容器名称(web01),实现将web01容器中的所有挂载卷挂载到web02容器。这样,web02容器可以访问web01容器中的卷数据。ubuntu
: 使用Ubuntu镜像启动容器。
这个命令的目的是创建一个名为web02的后台运行的容器,该容器使用Ubuntu镜像,并且通过
--volumes-from
选项将web01容器中的所有挂载卷挂载到web02容器。
总体上,这两个命令创建了两个容器,web01容器具有一个匿名数据卷,而web02容器通过--volumes-from
选项挂载了web01容器中的所有卷,实现了数据的共享。