美文网首页
docker间共享内存

docker间共享内存

作者: DifferentMan | 来源:发表于2024-05-20 10:19 被阅读0次

1.概论

默认情况下,docker间使用共享内存是无法跨docker查看的,因为docker使用了Namespace和Cgroups进行资源隔离。

查看命令如下:

ipcs 命令可以列出系统中的共享内存段、信号量和消息队列。使用 -m 选项可以只显示共享内存段的信息。
Resource options:
-m, --shmems shared memory segments 共享内存
-q, --queues message queues 消息队列
-s, --semaphores semaphores 信号量
-a, --all all (default)

ipcs -m

结果如下


------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0xfefe0001 17         root       660        2104       2                       
0x06fe0001 18         root       660        2104       2                       
0x00fe0001 19         root       660        2104       2   

查看 /proc/sysvipc/shm 文件,它包含了系统中所有共享内存段的详细信息。

cat /proc/sysvipc/shm

结果如下

       key      shmid perms                  size  cpid  lpid nattch   uid   gid  cuid  cgid      atime      dtime      ctime                   rss                  swap
 -16908287         17   660                  2104 437901 438530      2     0     0     0     0 1716254796 1716254796 1716254794                  4096                     0
 117309441         18   660                  2104 437901 438423      2     0     0     0     0 1716254795          0 1716254795                  4096                     0
  16646145         19   660                  2104 437901 438515      2     0     0     0     0 1716254795          0 1716254795                  4096                     0

2.实现方案

2.1 映射共享内存文件

  • /dev/shm:/dev/shm:rw
    volumes:
      - shm_volume:/dev/shm:rw
    ...
   
volumes:
  shm_volume:
    driver: local
    driver_opts:
      type: tmpfs
      device: tmpfs
version: "2.2"
services:
  core-agwMmeOamProcess:
    # ...
    volumes:
      - ./shm:/dev/shm # 将 shm 文件映射为共享内存文件
    # ...

  core-agwMmeIlf:
    # ...
    volumes:
      - ./shm:/dev/shm # 将 shm 文件映射为共享内存文件
    # ...

2.2 IPC (Inter-Process Communication) 命名空间

--ipc=host: 将容器的 IPC 命名空间与主机系统共享,允许容器访问主机上的 IPC 资源,如共享内存和信号量。

--ipc=private: 为容器创建一个新的私有 IPC 命名空间(默认值)。

--ipc=container:<name|id>: 将容器加入另一个容器的 IPC 命名空间。

    user: root
    logging:
      options:
        max-file: "4"
        max-size: "100M"
        compress: "true"
    extra_hosts:
      - "agwMmeS1Listener:127.0.0.1"
    network_mode: host
    ipc: host

相关文章

  • 8.31

    Android匿名共享(Ashmen)Android特有内存共享机制,实现了进程间的内存共享。基于ashmen设备...

  • 共享内存

    Linux进程间通信 - 共享内存

  • 2.Java内存模型

    1.java并发编程的线程间通信及线程间如何同步线程间通信分为:共享内存,消息传递。线程间同步:共享内存是代码指定...

  • 进程间通讯

    一、进程间通讯的方式进程间通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和...

  • 02-查看CPU和内存

    1. 内存查看和清理 1.1 内存查看 说明: shared(共享内存)作用:用于进程间相互通讯特点:共享、互斥 ...

  • 8.14

    进程间通信(IPC)实现方式共享内存:共享的内存间没有同步机制,需要进程协商解决;减少了数据的复制,速度更快 1...

  • 进程与线程 -- 线程同步

    全局变量共享 进程间的内存空间是相互独立的,包括全局变量在内的数据不能共享线程间共享所属进程的内存空间,全局变量可...

  • android中的进程通信和Binder机制

    进程间通信的方式 共享内存创建共享内存区int shmget(key_tkey,size_t size,int s...

  • 4. 进程间通信--共享内存、信号灯

    共享内存 共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝. int shmg...

  • 可见性

    导致共享变量在线程间不可见的原因 线程交叉执行 重排序结合线程交叉执行 共享变量更新后的值没有在工作内存与主内存间...

网友评论

      本文标题:docker间共享内存

      本文链接:https://www.haomeiwen.com/subject/dnonfjtx.html