docker 嵌套技术 docker outside of docker 可用于一个容器内调用另一个容器内程序 跨容器调用

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-07 10:48:56

环境:centos7  docker升级为最新版,

docker升级方法参考:《centos7 docker升级到最新稳定版本》https://blog.csdn.net/whatday/article/details/104612681

以tomcat容器为例:

docker run --name web --privileged -v /etc/localtime:/etc/localtime:ro -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -d -p 8080:8080  tomcat:8.5.35

重点:

1.将宿主机 /var/run/docker.sock 文件挂载到容器,实现容器内 docker 操作宿主机 docker 的目的

2.将宿主机 /usr/bin/docker  文件挂载到容器,直接当docker客户端使用。

宿主机docker列表:

tomcat容器内docker列表:

可以看到完全一样,

此时可以在 tomcat 容器中调用 其他容器 内的程序,示例如下:

 docker exec 其他容器 /bin/bash -c 'cd /packages/detectron && python tools/train.py'

注意事项:

1.-it 有可能造成命令不执行,特别是在程序调用时,确认的确需要再加上-it

2.如果程序调用脚本,脚本中,在 -c ''中用到变量如$1,将不会传递,因为这个shell变量到了其他容器内并不存在,可用映射目录临时文件存储变量的方式来传递。

具体可参考:《docker 在容器外执行某个容器内的某个命令》https://blog.csdn.net/whatday/article/details/104609021

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!