iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >docker中volumes文件如何实现映射
  • 254
分享到

docker中volumes文件如何实现映射

2023-06-14 06:06:46 254人浏览 八月长安
摘要

小编给大家分享一下Docker中volumes文件如何实现映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现通过docker-compose配置文件volum

小编给大家分享一下Docker中volumes文件如何实现映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

实现

通过docker-compose配置文件volumes参数

配置文件示例:

 volumes:   - /var/run/:/host/var/run/   - ./channel-artifacts:/var/hyperledger/configs   - ./fabric_logs:/tmp/fabric_logs/

容器中/tmp/fabric_logs目录映射到宿主机当前目录下的./fabric_logs目录下。这两个目录会共享数据。

创建容器时,代码中配置相关参数

代码中创建容器时添加:

func (vm *DockerVM) createContainer(ctxt context.Context, client dockerClient, imageID string, containerID string, args []string, env []string, attachStdout bool) error { volumes := make(map[string]struct{}) var mounts []docker.Mount var source string var destination string var fabricCfgPath = os.Getenv("FABRIC_CFG_PATH") var configName string _, err := os.Stat(fabricCfgPath) if err == nil {  configName = strings.ToLower(Peer_Prefix)  config := viper.New()  config.SetConfigName(configName)  config.AddConfigPath(fabricCfgPath)  config.ReadInConfig()  config.SetEnvPrefix("CORE")  config.AutomaticEnv()  replacer := strings.NewReplacer(".", "_")  config.SetEnvKeyReplacer(replacer)  config.SetConfigType("yaml")  destination = config.GetString("logging.logpath")  //fmt.Println(destination) } if destination == "" {  destination = "/tmp/fabric_logs/" } source = "/tmp/chaincode_logs/" + containerID volumes[destination] = struct{}{} mount := docker.Mount{  Name:  "bind",  Source:  source,  Destination: destination,  Mode:  "rw",  RW:   true,  Driver:  "rprivate", } mounts = append(mounts, mount) config := docker.Config{Cmd: args, Image: imageID, Env: env, Volumes: volumes, Mounts: mounts, AttachStdout: attachStdout, AttachStderr: attachStdout} hostConfig := getDockerHostConfig() hostConfig.Binds = []string{  source + ":" + destination + ":rw", } copts := docker.CreateContainerOptions{Name: containerID, Config: &config, HostConfig: hostConfig} dockerLogger.Debugf("Create container: %s", containerID) _, err = client.CreateContainer(copts) if err != nil {  return err } dockerLogger.Debugf("Created container: %s", imageID) return nil}

其中volumes,Mounts, Hostconfig.Binds参数需要按照自己的映射关系去填写。

这样和通过:

docker-compose 配置文件启动

或者docker -v 参数命令行启动

达到一样效果。

补充: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]# lsf1 zhy[root@docker1 ~]# cd /var/data/[root@docker1 data]# lsf1[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-serverFailed 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]# lsnfs.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 -h192.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]# lsnfs.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 -h192.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]# lsnfs.txt

以上是“docker中volumes文件如何实现映射”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: docker中volumes文件如何实现映射

本文链接: https://www.lsjlt.com/news/268534.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker中volumes文件如何实现映射
    小编给大家分享一下docker中volumes文件如何实现映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现通过docker-compose配置文件volum...
    99+
    2023-06-14
  • docker volumes 文件映射方式
    背景 在做区块链日志模块时,如果容器运行,需要把日志文件映射到宿主机上以方便查看。下面介绍一下我的实现方式。 实现 通过docker-compose配置文件volumes参数 配置文...
    99+
    2024-04-02
  • MacOS下如何实现docker端口映射
    这篇文章给大家分享的是有关MacOS下如何实现docker端口映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MacOS上的Docker网络结构图从里到外的顺序是:容器->boot2docker(虚拟机)...
    99+
    2023-06-19
  • docker怎么映射配置文件
    在Docker中映射配置文件的方法有两种: 使用Docker命令行选项 `-v` 或 `--volume` 来进行映射。该选项用...
    99+
    2023-10-27
    docker
  • Hibernate如何映射文件
    这篇文章给大家分享的是有关Hibernate如何映射文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于JPA是不需要配置的,代码里面已经包括了注释,所以下面附上Hibernate映射文件,为了使数据库里面更清...
    99+
    2023-06-17
  • php如何实现映射
    小编给大家分享一下php如何实现映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!映射映射,或者射影,在数学及相关的领域经常等同于函数。基于此,部分映射就相当于部...
    99+
    2023-06-06
  • mybatis映射文件操作存储过程如何实现
    本篇内容主要讲解“mybatis映射文件操作存储过程如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis映射文件操作存储过程如何实现”吧!先随便创建一个存储过程DELIMITER...
    99+
    2023-07-05
  • docker如何设置端口映射
    要设置Docker容器的端口映射,可以使用`-p`或`--publish`参数来指定要映射的端口。语法如下:```docker ru...
    99+
    2023-09-23
    docker
  • docker如何映射多个端口
    在Docker中,可以使用`-p`或`--publish`参数来映射多个端口。例如,要将容器的80端口映射到主机的8080端口,并且...
    99+
    2023-09-14
    docker
  • Docker如何查看映射端口
    这篇文章给大家分享的是有关Docker如何查看映射端口的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。查看映射端口docker port <容器名称或ID...
    99+
    2024-04-02
  • Python使用mmap如何实现内存映射文件操作
    这篇文章给大家分享的是有关Python使用mmap如何实现内存映射文件操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明 1)什么叫映射?   ==>就是给一个对象(可以是变量、物理等),起一个唯一的别...
    99+
    2023-06-15
  • docker指定端口映射怎么实现
    在Docker中,可以使用`-p`或`--publish`选项来指定端口映射。 语法如下: docker run -p : 例如,...
    99+
    2023-10-25
    docker
  • MybatisPlus如何自动生成映射文件
    目录如何自动生成映射文件一、pom.xml二、MybatisPlusUtil工具类自动映射autoMappingBehavior与mapUnderscoreToCamelCaseau...
    99+
    2024-04-02
  • Docker容器修改端口映射的实现
    目录可解决问题如下解决方案可解决问题如下 (1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射...
    99+
    2024-04-02
  • spring-mvc中如何实现映射处理器
    这篇文章主要介绍spring-mvc中如何实现映射处理器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.简析映射处理器在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了...
    99+
    2023-06-17
  • MyBatis中映射文件的使用
    MyBatis中映射文件的使用 1、配置核心文件 ①引入映射文件 ​ 首先我们得在核心配置文件中配置mappers,引入映射文件所在的包 这里必须满足两个条件: 接口和映射文件所在的包必须一致接口的名字和映射文件的名字必须一致...
    99+
    2023-08-18
    mybatis mysql java
  • Java中如何用内存映射处理大文件
    本篇内容介绍了“Java中如何用内存映射处理大文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!package test;&nbs...
    99+
    2023-06-17
  • SpringBoot如何重写addResourceHandlers映射文件路径
    这篇文章主要介绍“SpringBoot如何重写addResourceHandlers映射文件路径”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何重写addResourceHan...
    99+
    2023-06-29
  • mybatis映射文件操作存储过程的实现
    先随便创建一个存储过程 DELIMITER $$ CREATE PROCEDURE getUserNameById (IN i_id BIGINT, OUT o_name VARCH...
    99+
    2023-03-15
    mybatis映射文件 mybatis映射存储 mybatis映射文件存储
  • Mybatis映射文件规则实例详解
    目录1.ORM概念2.映射文件命名规则3.Mybatis的两个一致4.总结创建mybatis的步骤补充:MyBatis_自定义结果映射规则总结在说明映射文件规则之前,先来回顾一下OR...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作