65  
5 管理应用程序数据
作者: 系统管理员 于 2020年03月29日 发布在分类 / docker / docker基础 下,并于 2020年03月29日 编辑
docker

管理应用程序数据

1.1 将数据从宿主机挂载到容器中的三种方式

Docker提供三种方式将数据从宿主机挂载到容器中:

volumesDocker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。

bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。

tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能。


粘贴图片

1.2 volume

https://docs.docker.com/storage/volumes/

docker volume --help

l  管理卷

docker volume create nginx-vol

docker volume ls

docker volume inspect nginx-vol

l  用卷创建一个容器

docker run -d -it -p 89:80 --name nginx-test01 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx

docker  run -d -it -p 90:80 --name=nginx-test02 -v nginx-vol:/usr/share/nginx/html nginx

l  清理

docker  stop nginx-test01

docker rm nginx-test01

docker volume rm nginx-vol

注意:

1、如果没有指定卷,则会自动创建

2、建议使--mount,更通用

1.3 bind mounts

https://docs.docker.com/storage/bind-mounts/

l  用卷创建一个容器

docker run -d -it -p 88:80 --name=nginx-test01 --mount type=bind,src=/home/wwwhtml,dst=/usr/share/nginx/html nginx

docker run -d -it -p 89:80 --name=nginx-test02 -v /home/wwwhtml/:/usr/share/nginx/html nginx

l  验证绑定

docker inspect nginx-test01 |grep -A 9  Mounts

l  注意

1、如果源文件/目录没有存在,不会自动创建,会抛出一个错误

2、如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏

1.4 小节

volume特点:

1、多个运行容器之间共享数据

2、当容器停止或被移除时,该卷依然存在

3、多个容器可以同时挂载相同的卷

4、当明确删除卷时,卷才会被删除

5、将容器的数据存储在远程主机或其他存储上

6、将数据从一台Docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes/

Bind Mounts特点

1、从主机共享配置文件到容器。默认情况下,挂载主机/etc/resilv.conf到每个容器,提供DNS解析。

2、在Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker主机上构建Manen项目时,容器都可以访问构建的项目包。

3、当Dcoker主机的文件或目录结构保证与容器所需绑定挂载一致时。




 推荐知识

 历史版本

修改日期 修改人 备注
2020-03-29 13:50:16[当前版本] 系统管理员 创建版本

 附件

附件类型

PNGPNG

文艺知识分享平台 - 4.3.0 - 文艺范儿