返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/268534.html(转载时请注明来源链接)

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

猜你喜欢
  • 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如何查看映射端口的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。查看映射端口docker port <容器名称或ID...
    99+
    2024-04-02
  • docker如何设置端口映射
    要设置Docker容器的端口映射,可以使用`-p`或`--publish`参数来指定要映射的端口。语法如下:```docker ru...
    99+
    2023-09-23
    docker
  • docker如何映射多个端口
    在Docker中,可以使用`-p`或`--publish`参数来映射多个端口。例如,要将容器的80端口映射到主机的8080端口,并且...
    99+
    2023-09-14
    docker
  • Python使用mmap如何实现内存映射文件操作
    这篇文章给大家分享的是有关Python使用mmap如何实现内存映射文件操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明 1)什么叫映射?   ==>就是给一个对象(可以是变量、物理等),起一个唯一的别...
    99+
    2023-06-15
  • docker指定端口映射怎么实现
    在Docker中,可以使用`-p`或`--publish`选项来指定端口映射。 语法如下: docker run -p : 例如,...
    99+
    2023-10-25
    docker
  • mybatis如何实现继承映射
    目录mybatis 继承映射类图三个实体类的代码分析mybatis xml映射文件的继承问题1、首先dao层mapper.java需要继承原来的接口  2、继承原始mapper.xml的结果映射   mybatis 继承映射 ORM框架的优...
    99+
    2017-01-08
    mybatis继承 继承映射 mybatis映射
  • MybatisPlus如何自动生成映射文件
    目录如何自动生成映射文件一、pom.xml二、MybatisPlusUtil工具类自动映射autoMappingBehavior与mapUnderscoreToCamelCaseau...
    99+
    2024-04-02
  • spring-mvc中如何实现映射处理器
    这篇文章主要介绍spring-mvc中如何实现映射处理器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.简析映射处理器在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了...
    99+
    2023-06-17
  • Docker容器修改端口映射的实现
    目录可解决问题如下解决方案可解决问题如下 (1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射...
    99+
    2024-04-02
  • 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
  • Python使用mmap实现内存映射文件操作
    前言 内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。 说明  1)什么叫映射?    ==>...
    99+
    2022-06-02
    Python 内存映射文件操作 Python 内存映射
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作