2

我正在使用 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 /usr/lib64/libsystemd.so.0 libsystemd.so.0 ln: failed to create symbolic link 'libsystemd.so.0': File exists

解决这个问题后我看到了这个问题:问题

这是同样的问题:https ://botbot.me/freenode/docker/2015-12-01/?page=4

4

3 回答 3

4

在对上一个问题发表多次评论后,OP Jenson确认使其适用于:

我将不得不制作一个 dockerfile,因为运行命令太多了。
但它目前有效:

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

我提到从容器(“cic”:“container-in-container”)运行 docker 意味着挂载docker可执行文件和/var/run/docker.sock.
显然,该特定图像需要更多才能在容器内运行。

于 2016-01-11T14:22:00.137 回答
3

对于我的开发人员环境,我正在运行 docker -compose并连接到 ubuntu 映像容器(14.04 LTS)(我也安装了/var/run/docker.sock)。

由于昨天晚上更新了我的主机 ubuntu 系统,当我想在 dev 容器中运行 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 命令

于 2016-02-09T08:00:24.797 回答
0

从错误中,您的可执行文件所需的共享库似乎丢失了。解决此问题的一种方法是:

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

其他是将二进制文件与依赖项(依赖于语言)静态链接。

于 2020-05-09T14:21:47.230 回答