docker文件夹映射的两种方式---主机卷映射和共享文件夹映射

目录

主机卷的映射

使用共享存储的映射


docker容器不保持任何数据
重要数据请使用外部卷存储(数据持久化)
容器可以挂载真实机目录或共享存储为卷

主机卷的映射


[root@docker1 ~]# mkdir /var/data
[root@docker1 ~]# docker run -it -v /var/data:/abc myos
[root@f1fb58b85671 /]# cd /abc/
[root@f1fb58b85671 abc]# touch f1
[root@f1fb58b85671 abc]# ls
f1  zhy

[root@docker1 ~]# cd /var/data/
[root@docker1 data]# ls
f1
[root@docker1 data]# touch zhy


使用共享存储的映射


思路:将一台主机做为nfs主机, 创建相应的文件夹,并将其共享给docker的两台主机,两台docker主机将分享的文件夹映射到容器中,使得对应的容器可以共享到nfs主机的内容。可以将http等服务器的相应的页面文件夹使用这种形式,从而实现多个容器跑一个业务。
nfs主机配置【192.168.6.77】
[root@nfs ~]# yum -y install nfs-utils
[root@nfs ~]# vim /etc/exports
/public  *(rw)
[root@nfs ~]# systemctl restart nfs-server
Failed to restart nfs-serve.service: Unit not found
[root@nfs ~]# mkdir /public
[root@nfs ~]# cd /public/
[root@nfs public]# touch nfs.txt
[root@nfs public]# ls
nfs.txt

docker1主机配置
[root@docker1 ~]# vim /etc/fstab 
192.168.6.77:/public /mnt/nfs nfs defaults,_netdev 0 0
[root@docker1 ~]# mkdir  /mnt/nfs 
[root@docker1 ~]# systemctl restart nfs-server
[root@docker1 ~]# mount -a
[root@docker1 ~]# df -h
192.168.6.77:/public   17G  3.2G   14G   19% /mnt/nfs
[root@docker1 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos
[root@c7c376e3755a /]# cd /zhuhaiyan 
[root@c7c376e3755a zhuhaiyan]# ls
nfs.txt

docker2主机配置
[root@docker2 ~]# vim /etc/fstab 
192.168.6.77:/public /mnt/nfs nfs defaults,_netdev 0 0
[root@docker2 ~]# mkdir  /mnt/nfs 
[root@docker2 ~]# systemctl restart nfs-server
[root@docker2 ~]# mount -a
[root@docker2 ~]# df -h
192.168.6.77:/public   17G  3.2G   14G   19% /mnt/nfs
[root@docker2 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos
[root@cdd805771d07 /]# cd /zhuhaiyan/
[root@cdd805771d07 zhuhaiyan]# ls
nfs.txt

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Docker容器中的文件映射到宿主机上是一个非常常见的需求,这通常用于从宿主机上的本地文件系统读取和持久化容器中的数据。因此,Docker提供了一种简单但有效的方式——被称为容器的功能进行文件映射。 容器是指一个目录,它被设计为可以与宿主机文件系统中的某个目录共享,以便在容器中持久化数据。Docker支持两种类型的:命名和匿名。 1. 命名:命名是创建的,它具有一个显式的名称,可以在容器启动时或通过命令行创建。对于这些类型的,我们需要在运行容器时通过-v选项提供宿主机和容器文件系统之间的映射路径。 假设我们想将Docker容器数据映射到当前工作目录的"data"文件夹中,则使用下面的命令运行容器: docker run -it -v "$(pwd)/data:/data" image_name 这将会将容器的“/data”文件夹映射到本地计算机上当前工作目录下的“data”文件夹。可以将此路径替换为任何路径,以满足我们的需求。 2. 匿名:另一方面,匿名不需要指定的名字,在容器运行期间自动生成,而且通常用于存储容器中的临时数据。可以通过-Dockerfile中的VOLUME指令创建匿名。 在Dockerfile中,可以使用以下命令创建匿名: VOLUME ["/data"] 这将创建一个名为“/data”的,该可以在容器运行期间自动生成。无需指定的名称和路径,Docker会自动处理它。 总而言之,通过将Docker文件夹映射到宿主机上,我们可以使我们的容器拥有与宿主机相同的数据/文件,而不必每次重新安装容器。 通过使用,可以确保容器中的数据永久保存并且可供下次使用,避免数据丢失的情况。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值