目标:
部署一个可以访问主机共享库(liblinphone.so)或可以访问主机上的liphone安装的Docker容器。
正在使用的软件:
-Raspberry Pi计算模块
-Mono(C#)
-带C#包装器的Linphone
-Docker
摘要:
我在Mono(C#)中为RPi3编写代码。此代码使用GPIO和linphone安装(Linphone
该系统上安装了ARM版本)。该代码确实可以在本机Mono上完美运行。我的下一个目标是在Docker容器中运行它。为此,我确实设置了一个私有Gitlab服务器,Docker注册表和一个Gitlab管道来制作Docker映像。 Docker镜像的构建没有任何错误。
当我运行代码时,显然找不到liblinphone.so文件。但是我不知道该怎么办。
Docker运行命令:
docker run --privileged -v /etc/ld.so.cache:/etc/ld.so.cache -v /etc/ld.so.conf.d/:/etc/ld.so.conf.d/ -v /usr/local/lib/:/usr/local/lib/ -v /var/run/docker.sock:/var/run/docker.sock [registry]:5000/[image]:latest
我在.so文件和一些引用所在的位置添加了一些卷(不需要某些卷)。 --privileged部分用于访问GPIO。
错误:
Unhandled Exception:
System.DllNotFoundException: linphone assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) Linphone.Core.linphone_core_set_log_level_mask(uint)
at Linphone.Core.SetLogLevelMask (System.UInt32 mask) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.Phone.CreatePhone (System.String username, System.String password, System.String server, System.Int32 port, System.String agent, System.String version) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.BlackBox..ctor (BlackBox.BlackBox+AppFunction appFunction) [0x00198] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.MainClass.Main (System.String[] args) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: linphone assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) Linphone.Core.linphone_core_set_log_level_mask(uint)
at Linphone.Core.SetLogLevelMask (System.UInt32 mask) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.Phone.CreatePhone (System.String username, System.String password, System.String server, System.Int32 port, System.String agent, System.String version) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.BlackBox..ctor (BlackBox.BlackBox+AppFunction appFunction) [0x00198] in <5285048db55d447fae3be4c32e253dbd>:0
at BlackBox.MainClass.Main (System.String[] args) [0x00001] in <5285048db55d447fae3be4c32e253dbd>:0
我的猜测是我无法安装线性电话.so / installation。但是相反,我必须挂载docker socket并在主机上本地运行它。但这也没有使我成功(由于无知)。
答案 0 :(得分:1)
要访问docker内部的共享库,以下是方法之一:
答案 1 :(得分:0)
在构建容器的Dockerfile中,运行安装命令以安装提供共享库的软件包。
答案 2 :(得分:0)
这是我的DockerFile:
FROM mono:latest
ADD . /src
WORKDIR /src
RUN xbuild BlackBox.csproj
CMD ["mono", "/src/bin/Debug/BlackBox.exe"]
所以我必须做这样的事情:
FROM mono:latest
ADD . /src
WORKDIR /src
RUN apt-get install neededthing another so_on
RUN xbuild BlackBox.csproj
CMD ["mono", "/src/bin/Debug/BlackBox.exe"]
我正确吗,@ Raedwald?