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

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

我正在使用 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 我的 Docker 环境中有一个 Jenkins 容器 运行。 当我访问 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: 未能创建符号 link 'libsystemd.so.0': 文件存在

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

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

在对 , the OP Jenson 进行多条评论后确认它可以用于:

I will have to make a dockerfile because the run command is too much.
But it works at the moment:

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

我提到 运行ning docker 来自容器 ("cic": "container-in-container") 意味着安装 docker 可执行文件和 /var/run/docker.sock .
显然,该特定图像需要从容器中 运行 多一点。

对于我的开发环境,我 运行宁 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 命令

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

  1. 在 Dockerfile 中使用 "COPY" 命令将共享的 libraries/dependencies 复制到容器中。示例:复制 {local_path} {docker_path}
  2. 然后,在标准目录集之前设置首先搜索共享库的环境变量。例如,对于基于 Linux 的 OS,使用 LD_LIBRARY_PATH。可以通过 Docker's Environment replacement (ENV) 设置环境变量。示例:ENV LD_LIBRARY_PATH={docker_path}:$LD_LIBRARY_PATH

其他是静态 link 你的二进制文件与依赖项(语言相关)。