在使用 Docker 进行开发时,我们常常需要启动一些容器来运行服务。但是,容器退出后,如果没有做好数据的持久化处理,那么容器内的所有数据都会被清空,这无疑会给我们带来极大的不便。因此,本文将详细介绍 Docker 容器退出后如何保留数据。
为何需要进行数据持久化
在容器运行过程中,我们可能需要保存一些重要的数据,比如数据库、配置文件等等。但是容器是临时的,如果没有做好数据持久化处理,一旦容器退出或被删除,所有数据都会被清空,这将给我们的开发和运维工作带来极大的麻烦。
因此,我们需要将容器内的数据持久化到本地或网络存储中,以保证数据的安全性和可靠性。
数据持久化的三种方式
Docker 提供了三种常见的数据持久化方式:
1. 数据卷(Volume)
数据卷是 Docker 提供的最常用的方式之一。通过数据卷,我们可以将容器内的指定目录映射到宿主机或其他容器的指定目录中,以实现数据的持久化。
示例代码:
docker run -d \ -v /host/dir:/container/dir \ --name mycontainer \ myimage
其中:
-v
参数表示将宿主机的/host/dir
目录映射到容器的/container/dir
目录中;myimage
表示要运行的镜像;--name
参数指定容器的名称。
当容器被删除后,数据依然可以保存在宿主机中,重新启动容器时只需再次映射即可。
2. 绑定挂载(Bind Mount)
绑定挂载与数据卷类似,但更为灵活。通过绑定挂载,我们可以将宿主机的任意目录映射到容器的任意目录中,以实现数据的持久化。
示例代码:
docker run -d \ -v /host/dir:/container/dir:ro \ --name mycontainer \ myimage
其中:
-v
参数表示将宿主机的/host/dir
目录以只读模式(ro
)映射到容器的/container/dir
目录中;myimage
表示要运行的镜像;--name
参数指定容器的名称。
3. Docker 数据卷容器
Docker 数据卷容器是一种特殊的容器,它不运行任何服务,只用于提供数据卷的持久化服务。通过容器间的数据卷挂载,我们可以将数据卷容器中的数据持久化到本地或网络存储中。
示例代码:
docker create -v /data/db --name dbdata mongo:latest docker run -d \ --volumes-from dbdata \ --name mymongo \ mongo:latest
其中:
docker create
命令创建一个名为dbdata
的数据卷容器,指定/data/db
目录作为数据卷;docker run
命令运行mongo:latest
镜像,并将dbdata
容器中的/data/db
目录挂载到容器内的/data/db
目录中。
总结
本文介绍了 Docker 容器退出后如何保留数据,并介绍了三种数据持久化方式:数据卷、绑定挂载和 Docker 数据卷容器。在具体操作中,我们可根据实际情况选择最为适合的方式,以保证数据的安全性和可靠性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6482c5c548841e9894221957