容器时代

docker共享数据卷实战

Linux · 12月3日 · 2019年

 

、VOLUME数据

Docker提供三种方式将数据从宿主机挂载到容器中:
volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。
tmpfs:挂载存储宿主机系统内存中,而不会写入主机的文件系统。如果不希望将数据持久化存储任何位置,可以使用。
tmpfs,同时避免写入容器可写层提高性能。

 

  • 实战演示

管理卷

  • volume数据卷管理

1、创建数据卷

[root@docker ~]# docker volume create nginx_vol
nginx_vol
[root@docker ~]# docker volume ls

2、查看当前所有数据

docker volume ls
nginx_vol 

数据卷共享方式–mount

[root@docker ~]# docker run -d --name nginx_01 -p 88:80 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx:1.16 
WARNING: IPv4 forwarding is disabled. Networking will not work.
3adf286852ecd53dcd43b75af109e8abe40df617f624d45a371096331677f879

参数:–;mout 挂载

src=源数据卷:意思本地哪个路径的数据卷

dst=目标数据卷:将物理机哪个持久化到物理机数据卷

 

数据卷共享方式2 -v

[root@docker _data]# docker run -d --name nginx02 -v tcp_01:/usr/local/share/nginx/html nginx:1.16 
974cd2a9f8a98abafec40f64eb823a812c8f52579909446079b3595a268c107b

 ;

Volume特点:

多个容器之间共享数据

多个容器停止或被除时,改卷依然存在

多个容器可以同时挂载相同数据卷

当确认删除卷时,卷会被删除

器的数据存储在远程主机或其他存储上。

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

 

清理数据卷

docker stop tcp_01
docker rm tcp_01
docker volume rm tcp_01

二、BIND卷

管理卷

  • 将源目录挂载到绑定到容器中目标目录

bind卷挂载方法1:

[root@docker _data]# docker run -d --name nginx_test --mount type=bind,src=/mnt/,dst=/usr/local/nginx/html nginx:1.16 
10b7ad5d33c746964288164677b5298b6962d24f445dd89dabf51a9cf7313ba6

 

bind卷挂载方法2:

[root@docker _data]# docker run -d --name nginx07 -v /mnt/:/usr/local/share/nginx/html nginx:1.16 
5963013de5cdaa0daf1076c6f8c894ba28a882514dfeef090a8a3d4eec661681

 

注意:

1.如果文件/目没有存在,不会自动创建 ,会抛出一个

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

 

BIND Mounts特点:

先从主机共享配置文件到容器当中,默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS

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

docker主机的文件或目录结构保证与容器所需要绑定挂载一直时。

0 条回应