loadingDocker时出错:共享库:libsystemd-journal.so.0:无法打开共享对象文件。没有这样的文件或目录

问题描述 投票:2回答:3

我使用的是Docker版本。

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:25:01 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:25:01 UTC 2015
 OS/Arch:      linux/amd64

我在Centos 7上有一个Jenkins容器运行在我的Docker环境中,当我访问Jenkins容器并尝试执行Docker命令时,我得到了这个错误。

libsystemd-journal.so.0: cannot open shared object file: No such file or directory

我试过:[root@localhost lib64]# sudo ln -s usrlib64libsystemd.so.0 libsystemd.so.0ln: failed to create symbolic link 'libsystemd.so.0': 文件存在

我看到这个问题后,解决了这个问题。问题

这里也是同样的问题。https:/botbot.mefreenodedocker2015-12-01?page=4

docker shared-libraries libsystem
3个回答
4
投票

在多次对 前一个问题జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ OP Jenson 确认使其工作与。

我将不得不做一个docker文件 因为运行命令太多。但目前它的工作。

docker run -d --name jenkins --volumes-from jenkins-dv --privileged=true \
-t -i \
-v /var/run/docker.sock:/var/run/docker.sock 
-v $(which docker):/bin/docker \ 
-v /lib64/libsystemd-journal.so.0:/usr/lib/libsystemd-journal.so.0 \
-v /lib64/libsystemd-id128.so.0:/usr/lib/libsystemd-id128.so.0 \
-v /lib64/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02 \
-v /lib64/libgcrypt.so.11:/usr/lib/libgcrypt.so.11 \
-v /lib64/libdw.so.1:/usr/lib/libdw.so.1 \
-p 8080:8080 jenkins

我提到从容器中运行docker("cic":"容器中的容器") 意味着要挂载... docker 可执行和 /var/run/docker.sock. 显然,这个特殊的镜像需要更多的东西才能在容器内运行。


3
投票

在我的开发环境中,我正在使用 docker-compose 我连接到ubuntu映像容器(14.04 LTS)(我挂载了 /var/run/docker.sock 也是)。)

自从昨天晚上更新了我的主机ubuntu系统后,当我想在开发容器内运行docker命令时,我遇到了同样的错误。

[dev@docker_dev]:~$ docker ps
docker: error while loading shared libraries: libsystemd-journal.so.0: cannot open shared object file: No such file or directory

所以我做了一个更新,并安装了 libsystemd-journal0 :

[dev@docker_dev]:~$ sudo apt-get update
[dev@docker_dev]:~$ sudo apt-get install libsystemd-journal0

现在我的开发容器可以用docker命令正常工作。


0
投票

从错误来看,你的可执行文件所需的共享库缺失。解决这个问题的一个方法是。

  1. 在Dockerfile中使用 "COPY "命令将共享库的依赖关系复制到容器中。例如 COPY {local_path} {docker_path}。
  2. 然后,设置环境变量,在标准目录集之前,首先搜索共享库。例如对于基于Linux的操作系统,使用LD_LIBRARY_PATH。环境变量的设置可以通过 Docker的环境替换(ENV). 例子:ENV LD_LIBRARY_PATH={docker_path}:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH={docker_path}:$LD_LIBRARY_PATH。

另一种是将你的二进制文件与依赖关系静态地链接起来(依赖于语言)。

© www.soinside.com 2019 - 2024. All rights reserved.