Docker使用4-Persist the DB
2023-12-18 11:34:04
写在前面
主题是Persist the DB,这里是链接。本文主要学习如何持久化容器中的数据。
实践
-
使用docker运行一个随机生成1-10000的数的命令。下面是两个命令用
&&
合并在一起,第一个命令是生成随机数并输出到data.txt,后面的命令是保持容器运行以方便后面查看文件docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"
-
执行下面的命令得到生成的数字。
exec
是交换容器的关键字,后面接上容器id即可访问该容器。执行后会打印出一个数字。docker exec <container-id> cat /data.txt
-
执行下面的命令直接将输入打印出来,并不会存入data.txt文件。其中
ls /
是相对容器的目录。docker run -it ubuntu ls /
-
执行下面的命令把操作1的容器停止
docker rm -f <container-id>
卷Volumes
启动容器后,在容器内的增删改操作都保留在容器里,当容器关闭后,数据与随之丢失。 Volumes让容器内的路径与主机关联起来,如果挂载了一个容器的目录,容器内的修改同样会对主机造成同样的影响。Volumes有两种方式,一种是mount,另一种是使用docker的volume
创建Volume并启动容器
有一点需要知道,todo app将数据存储在容器内的 /etc/todos/todo.db
内。
- 创建Volume
docker volume create todo-db
- 使用下面命令启动getting-started,src是Volume的名字,target是容器内的路径
docker run -dp 127.0.0.1:3000:3000 --mount type=volume,src=todo-db,target=/etc/todos getting-started
- 访问
http://localhost:3000
,添加几个item
- 停止并移除当前容器,使用
docker ps
和docker rm -f <id>
实现 - 使用上面的命令重新生成一个容器
docker run -dp 127.0.0.1:3000:3000 --mount type=volume,src=todo-db,target=/etc/todos getting-started
- 重新访问
http://localhost:3000
,会看见item还保留在那里
如何得到Volume存储的位置
执行下面命令得到Volume的元数据。其中Mountpoint就是实际的存储路径。
docker volume inspect todo-db
[
{
"CreatedAt": "2019-09-26T02:18:36Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/todo-db/_data",
"Name": "todo-db",
"Options": {},
"Scope": "local"
}
]
文章来源:https://blog.csdn.net/qq_45382931/article/details/135053012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!