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

问题描述

我正在尝试通过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"]

我的run_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_id类似于rundir_thread0,rundir_thread1等。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)