我使用的是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@localhostlib64]#sudo ln-s/usr/lib64/libsystemd.so.0 libsystemd.so.0ln:无法创建符号链接"libsystemd.so.0":文件存在
我在解决这个问题后看到了这个问题:问题
以下是相同的问题:https://botbot.me/freenode/docker/2015-12-01/?page=4
在对上一个问题进行了多次评论后,OP Jenson确认可以使用:
我将不得不制作一个dockerfile,因为run命令太多了
但目前有效:
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":"容器中的容器")运行docker意味着安装docker
可执行文件和/var/run/docker.sock
显然,这个特定的映像需要更多的内容才能从容器中运行。
对于我的开发人员环境,我正在运行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命令
从错误中,您的可执行文件所需的共享库似乎丢失了。解决此问题的一种方法是:
- 使用Dockerfile中的"COPY"命令复制容器中的共享库/依赖项。示例:COPY{local_path}{docker_path}
- 然后,在标准目录集之前,设置首先搜索共享库的环境变量。例如,对于基于Linux的操作系统,将使用LD_LIBRARY_PATH。环境变量可以通过Docker的环境替换(ENV)进行设置。示例:ENV LD_LIBRARY_PATH={docker_PATH}:$LD_LIBRRAY_PATH
另一种是将二进制文件和依赖项(依赖于语言)静态地链接起来。