gpt4 book ai didi

docker - 访问 Docker 容器内的共享库

转载 作者:行者123 更新时间:2023-12-02 19:23:36 34 4
gpt4 key购买 nike

目标:
部署一个 Docker 容器,可以访问主机共享库(liblinphone.so)或者可以访问主机上安装的 liphone。

使用中的软硬件:
- 树莓派计算模块
- 单声道(C#)
- 带有 C# 包装器的 Linphone
- docker

摘要:
我正在用 Mono(C#) 为 RPi3 编写代码。此代码使用 GPIO 和 linphone 安装(Linphone
此系统上安装了 ARM 版本)。代码在原生 Mono 上运行完美。我的下一个目标是在 Docker 容器中运行它。为此,我确实设置了一个私有(private) 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

我的猜测是我无法安装 linphone .so/installation。但相反,我必须安装 docker 套接字并在主机上本地运行它。这也没有让我成功(由于无知)。

最佳答案

要访问 docker 内部的共享库,以下是其中一种方法:

  • 在 Dockerfile 中使用“COPY”命令复制容器内的共享库/依赖项。示例:复制 {local_path} {docker_path}
  • 在标准目录集之前设置首先搜索共享库的环境变量。例如对于基于 Linux 的操作系统,使用 LD_LIBRARY_PATH。环境变量可以通过Docker's Environment replacement (ENV)设置示例:ENV LD_LIBRARY_PATH={docker_path}:$LD_LIBRARY_PATH
  • 关于docker - 访问 Docker 容器内的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58113780/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com