扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关如何在docker容器中调用宿主机的docker,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联是一家专业提供宜川企业网站建设,专注与成都网站制作、网站设计、外贸网站建设、HTML5建站、小程序制作等业务。10年已为宜川众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。首先说一下,如何在docker中执行宿主机的docker操作,我们管它叫docker in docker。
至于为什么要在docker中操作宿主机的docker,优点不言而喻,你既可以将你的具体需求容器化部署,又不用直接在宿主机上安装(假设我们没有办法在docker中操作宿主机的docker,那么我们只能将这样的软件程序直接安装到宿主机上,这样显然是不利于管理和维护的)。
实现这种需求,其实非常简单,你只需要将docker宿主机的docker文件和docker.sock文件挂载到容器中即可,具体为:
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
你要先找到你宿主机的docker和docker.sock位置,别挂载错了,标准的Linux正常来说就是上面的位置。
你在启动docker容器的时候,将上述两个文件正常挂载后,就可以在docker中执行诸如 docker images 等等这样的命令了。
如果出现问题 permission denied
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
…………………………………………………………
dial unix /var/run/docker.sock: connect: permission denied
解决方法
在容器所在的宿主机上直接给 docker.sock 777权限,命令 chmod 777 docker.sock
华丽丽的分割线
下面是针对群辉系统,你不用太关心这个系统是什么,总之就是这个系统在docker方面有一些特有的问题,导致你不能这么随心所欲,所以我采用了一种变通的方法来处理(一种思路,抛砖引玉)先叙述一下现状:
该系统提供了docker的UI管理工具,我们在这个工具上可以进行常规的挂载操作,但是如果我们想挂载上面的docker和docker.sock文件,就不行了,先看一下截图:
说一下图上UI操作的局限性!
群辉官方进行了限制,你可以选择的文件,是不可能选择到 /usr/ /va/ 等这样系统层面的文件的,也就是我们无法直接挂载docker和docker.sock文件。
做 ln -s 软连接是否可行?
经尝试,先通过ssh命令行在jenkins文件夹中创建2个软连接(将docker和docker.sock进行软连接),然后回到群辉的UI界面,依然不能选择(因为群辉直接屏蔽了软连接文件,你是看不到的)
那么如何解决呢?
我的方法是(软连接的方法变通一下):
1、在图上的jenkins目录下随便创建2个文件 docker 和 docker.sock 文件(命名正确即可)
2、然后在docker点击“添加文件”按钮,正常选择这2个文件,进行挂载,你完全可以正常挂载并且完成其他配置,配置完毕后,暂时不要启动docker容器。
3、登录ssh进入群辉,将jenkins目录中刚刚创建的2个文件删除掉,然后把docker和docker.sock源文件创建软连接到jenkins中。
root@test:cd /volume1/docker/jenkins/ root@test:rm -rf docker docker.sock root@test:ln -s /run/docker.sock /volume1/docker/jenkins/docker.sock root@test:ln -s /usr/local/bin/docker /volume1/docker/jenkins/docker root@test:/volume1/docker/jenkins# ll total 8 drwxrwxrwx+ 1 Nuggets users 96 Jun 6 11:22 . drwxr-xr-x+ 1 root root 188 May 30 19:29 .. lrwxrwxrwx 1 root root 21 Jun 6 11:22 docker -> /usr/local/bin/docker lrwxrwxrwx 1 root root 16 Jun 6 11:21 docker.sock -> /run/docker.sock drwxrwxrwx+ 1 shanhongyu users 24 Jun 1 11:07 java_home drwxrwxrwx+ 1 Nuggets users 4476 Jun 6 11:00 jenkins_home drwxrwxrwx+ 1 shanhongyu users 82 Jun 1 11:12 maven_home
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流