Tag: ipc

在使用时,pthreads进程共享内存:docker run –ipc –pid

我正在C ++开发一个多处理的应用程序使用PTHREAD_PROCESS_SHARED pthread_rwlock pthreads实现IPC通过命名共享内存。 对于共享内存访问,我使用shm_open和mmap : auto fd = shm_open(name.c_str(), O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); ftruncate(fd, size); addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); rwlocks在mmap -ed内存中被初始化,使用: pthread_rwlockattr_t attrrwlock; pthread_rwlockattr_init(&attrrwlock); pthread_rwlockattr_setpshared(&attrrwlock, PTHREAD_PROCESS_SHARED); pthread_rwlockattr_setkind_np(&attrrwlock, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); class Shm{ …. pthread_rwlock_t rwLock; … } auto shm = Shm(addr); pthread_rwlock_init(&(shm.rwLock), &attrrwlock); 这在主机环境中工作正常:我可以启动例如一个生产者和多个消费者/工作者进程使用相同的IPC共享内存文件,并通过进程共享pthread_rwlocks同步读/写共享内存: int errc = pthread_rwlock_timedrdlock(&rwLock, […]

从另一个docker集装箱获取docker集装箱输出

我有一个应用程序通过docker run –rm …运行dockerized命令。 是否有可能dockerize这个应用程序? 例如,我希望应用程序RUNNER运行应用程序RUNNABLE和读取标准输出结果。 (我需要asynchronous调用时尚RUNNABLE多个实例,但这是RUNNER应用程序业务) 我知道有可能只是将root访问权限导出到RUNNER应用程序的Docker套接字,但是这种感觉不正确。 特别是对于* nix应用程序没有根运行规则。 有没有其他的方法来沟通容器,而不是将套接字导出到容器? 我在做系统devise是否错误?

docker进程可以使用ipc访问主机上的程序

我正在使用MQSeries的集群tomcat系统上工作。 今天,MQSeries以绑定模式进行访问,即通过IPC和tomcat和mqeries在同一主机上运行,​​而无需任何虚拟化/ docker支持。 我想将其转换为一个解决scheme,其中mqseries在主机上运行(或在Docker容器中运行)tomcat实例在docker容器中运行。 可以通过客户端模式(通过tcp连接)访问mqseries,这似乎是正确的解决scheme。 是否仍然可以通过ipc从docker容器访问mqseries,即为ipc命名空间分离创buildexception? 有没有像Docker的计划?

是否有可能以某种方式在Docker容器之间或容器与主机之间使用POSIX信号量?

我正在尝试将多进程应用程序迁移到Docker。 不同的进程将被放置在不同的Docker容器中。 应用程序使用共享内存交换数据和信号量进行同步。 为了不使用IPC命名空间,我已经重新编译了Docker,并且使用sudo ipcs -m有效地检查了共享内存缓冲区是否可以从不同的容器访问。 问题是信号灯不工作。 我编写了这些简单的程序来检查Docker中POSIX信号量的行为: /* To be compiled with -lpthread */ #include <stdio.h> #include <fcntl.h> #include <semaphore.h> int main(void) { int ret, val; sem_t * mySem; printf("[ONE] Opening the semaphore…\n"); mySem = sem_open("sem1", O_CREAT, 0777, 0); if (mySem == SEM_FAILED) { printf("[ONE] Error on sem_open()\n"); return -1; } ret = sem_post(mySem); […]