Docker:容器数据持久化

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命令是用于创建两个容器的。让我们逐个解释它们:

  1. 第一个命令:

    docker run -d -v /data --name=web01 ubuntu
    • -d: 在后台运行容器。
    • -v /data: 创建一个匿名数据卷并将其挂载到容器的 /data 目录。这是一个具有持久性的卷。
    • --name=web01: 指定容器的名称为web01。
    • ubuntu: 使用Ubuntu镜像启动容器。

    这个命令的目的是创建一个名为web01的后台运行的容器,该容器使用Ubuntu镜像,并且在容器内创建了一个匿名数据卷挂载到/data目录。

  2. 第二个命令:

    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容器中的所有卷,实现了数据的共享。

tag(s): none
show comments · back · home
Edit with Markdown