在Ubuntu中使用Docker时,共享数据通常是通过Docker卷(volumes)或者绑定挂载(bind mounts)来实现的。下面是两种方法的详细说明:
Docker卷是在一个或多个容器之间共享数据的最佳方式,因为它们是由Docker管理的,这意味着数据会在容器删除后仍然保留。
创建一个卷:
docker volume create my_volume
运行一个容器并挂载卷:
docker run -it --mount source=my_volume,target=/container/path ubuntu
在容器内部,你可以像操作普通目录一样操作/container/path
。
如果你想在另一个容器中使用相同的数据,只需在运行新容器时挂载相同的卷:
docker run -it --mount source=my_volume,target=/container/path ubuntu
绑定挂载允许你将宿主机上的文件或目录挂载到容器中。这种方式更加灵活,因为你可以在宿主机和容器之间共享任意文件或目录。
在宿主机上创建一个目录(如果尚不存在):
mkdir /path/on/host
运行一个容器并绑定挂载宿主机目录:
docker run -it --mount type=bind,source=/path/on/host,target=/container/path ubuntu
现在,容器内的/container/path
将映射到宿主机上的/path/on/host
。
对宿主机上的文件或目录所做的任何更改都将反映在容器中,反之亦然。
选择哪种方法取决于你的具体需求。如果你需要在多个容器之间共享数据,并且希望Docker来管理数据的生命周期,那么使用卷是更好的选择。如果你需要访问宿主机上的特定文件或目录,或者想要将容器内的数据持久化到宿主机上,那么绑定挂载可能更适合。