以线程安全的方式运行docker容器的多个实例

以线程安全的方式运行docker容器的多个实例,docker,stdthread,Docker,Stdthread,我试图通过docker容器在macOS上运行linux可执行文件的多个实例。我面临的问题是,当我运行容器的多个实例时,macOS的I/O速度非常慢。我怀疑这是因为我运行多个容器实例的方式。我如何解决这个问题 详情: 我有一个centos-7 docker容器,可以在macOS上运行linux可执行文件。Docker文件是: FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL \ org.label-schema.schema-v

我试图通过docker容器在macOS上运行linux可执行文件的多个实例。我面临的问题是,当我运行容器的多个实例时,macOS的I/O速度非常慢。我怀疑这是因为我运行多个容器实例的方式。我如何解决这个问题

详情:

我有一个centos-7 docker容器,可以在macOS上运行linux可执行文件。Docker文件是:

FROM scratch
ADD centos-7-x86_64-docker.tar.xz /

LABEL \
    org.label-schema.schema-version="1.0" \
    org.label-schema.name="CentOS Base Image" \
    org.label-schema.vendor="CentOS" \
    org.label-schema.license="GPLv2" \
    org.label-schema.build-date="20200504" \
    org.opencontainers.image.title="CentOS Base Image" \
    org.opencontainers.image.vendor="CentOS" \
    org.opencontainers.image.licenses="GPL-2.0-only" \
    org.opencontainers.image.created="2020-05-04 00:00:00+01:00"

ADD my_exec_folder /usr/local/my_exec_folder
RUN yum install -y openssl
RUN yum install -y neon
ENV LD_LIBRARY_PATH="/usr/lib64:${LD_LIBRARY_PATH}"
COPY ./run_my_exec.sh /
RUN chmod +x /run_my_exec.sh
ENTRYPOINT ["/run_my_exec.sh"]
My run\u My_exec.sh的运行方式如下:

#!/bin/bash                                                                                                                                                                                          

export MYEXEC="/usr/local/my_exec_folder/bin/my_exec"

cd $1
cp $MYEXEC .
./my_exec $2
rm ./my_exec
我使用以下内容构建容器:

docker build -t my_exec_c .
然后,在我的程序中,我在用std::thread打开的bash终端中运行容器。我运行容器时使用的命令是:

docker run -t -v /my/rundir_id/on/macos:/rundir_id my_exec_c rundir my_inputs

,其中rundir\u id类似于rundir\u thread0、rundir\u thread1等。

我怀疑这里的主要限制因素是磁盘I/O。他们需要共享该rundir吗?@Fildor更新了问题,他们不共享rundir。这是
-v
选项。Linux和MacOS(BSD)环境在许多方面都很相似,为本机MacOS重新编译二进制文件可能会更成功。可执行文件由不太热衷于生成MacOS二进制文件的外部供应商编译和维护。。。