gpt4 book ai didi

ubuntu - docker 中的 LD_PRELOAD

转载 作者:行者123 更新时间:2023-12-04 18:25:23 24 4
gpt4 key购买 nike

当我按以下方式运行 docker 时:

docker run -it -e LD_PRELOAD=/bin/xyz.so bash env

它按预期运行,输出为:
HOSTNAME=2116ac3bae11
_BASH_VERSION=4.4
_BASH_LATEST_PATCH=23
PWD=/
HOME=/root
_BASH_GPG_KEY=7C0135FB088AAF6C66C650B9BB5869F064EA74AB
TERM=xterm
SHLVL=0
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_BASH_PATCH_LEVEL=18
LD_PRELOAD=/bin/xyz.so

但是,当我使用另一个图像(例如 ubuntu 或 centos)运行相同的命令时:
docker run -it -e LD_PRELOAD=/bin/xyz.so ubuntu env
docker run -it -e LD_PRELOAD=/bin/xyz.so centos:7 env

LD_PRELOAD 变量从输出中消失:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=00b161980ef6
TERM=xterm
HOME=/root

谁能解释命令之间有什么区别?
如何使用 LD_PRELOAD 运行 centos 镜像?

这似乎是一些 docker 安全机制,它从环境变量中清除 LD_PRELOAD。但是为什么只在最后一个命令中而不是在第一个命令中呢?

Docker 版本 17.12.1-ce,构建 7390fc6

最佳答案

您的 ld_preload 共享对象可能不存在于这些 docker 镜像中,或者它依赖于其他 docker 镜像中不存在的依赖项。
您可以通过查看 Docker 镜像文件系统中的共享对象及其依赖项轻松找出答案。要弄清楚依赖关系是什么,请使用“ldd/bin/xyz.so”作为依赖关系。

关于ubuntu - docker 中的 LD_PRELOAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51307496/

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