我在Docker容器中运行Jenkins。
我使用以下命令启动容器-
docker run -p 8080:8080 -p 50000:50000 -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins
注意
-v /var/run/docker.sock:/var/run/docker.sock
-我这样做是为了按照this文章从Jenkins中访问docker守护程序。我使用
cd
将docker exec -it <mycontainer> bash
放入jenkins容器然后我运行
docker ps -a
,但仍然出现docker command not found错误。我在网上做了更多研究,发现了有关Jenkins的docker插件,并将其配置为连接到docker守护程序。我收到以下错误
我想念什么吗?我该如何解决这个问题?请注意,我是在MAC机器上本地执行此操作的。
最佳答案
-v /var/run/docker.sock:/var/run/docker.sock
,这仅意味着您的容器具有访问主机上的docker daemon
的能力,并不意味着您的容器将具有docker client
。
您可以使用-v $(which docker):/usr/bin/docker
将docker client
添加到您的容器中,然后您将找到命令。
docker run -u root -p 8080:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins
如果您要保留jenkins用户,则可以使用另一种方法。
docker run -u jenkins:$(cut -d: -f3 < <(getent group docker)) -p 8080:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins
关于docker - 无法从 Jenkins 访问Docker Daemon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56144610/