前提
(1)宿主机安装好了Docker。
(2)宿主机拉取Jenkins的最新镜像。
场景
使用Jenkins将打包好的镜像推送到远程镜像仓库时,运行docker login命令的时候,控制台报错:docker command not found。
原因
Jenkins容器内部并没有安装Docker,但是我不想在内部再安装一个Docker,而是想直接使用使用宿主机内部的Docker。
思路
将宿主机的Docker引擎挂载到Jenkins容器上,即Jenkins容器调用宿主机的Docker。
挂载内容
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
方法
方法一(vim操作,需要细心)
修改配置文件,可参考该文章(2条消息) Docker修改容器挂载目录的三种方式_拉比比比的博客-CSDN博客_docker修改容器挂载
方法二(个人推荐)
关闭原jenkins容器(如果之前开过的话),新开一个容器,但是新增docker挂载内容。
示例:我想创建一个名字为jenkins的容器,暴露端口为8888,jenkins_home在宿主机上的目录是/server/jenkins/home。
创建容器的命令如下:
docker run --name jenkins -d -p 8888:8080 -p 50000:50000 --restart=always -v /server/jenkins/home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:latest
如果启动失败,且原因是permission denied,原因是宿主机目录和jenkins容器的用户不是一个,使用如下目录授权,目录根据自己设置的宿主机目录自行修改:
chown -R 1000:1000 /server/jenkins/home
启动成功
输入如下命令测试jenkins容器内部是否能使用Docker,容器ID根据实际情况自行修改
docker exec -it 242 /bin/bash
再输入docker info,如图所示即为安装成功
如果出现了permission denied,情况同上,输入如下命令对权限不够的目录进行授权 文章来源:https://www.toymoban.com/news/detail-653261.html
chown -R 1000:1000 /var/run/docker.sock
问题解决。文章来源地址https://www.toymoban.com/news/detail-653261.html
到了这里,关于Jenkins(Docker版)中使用宿主机的Docker的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!