docker 嵌套技术 docker outside of docker 可用于一个容器内调用另一个容器内程序 跨容器调用 docker容器内获取自身容器信息

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

docker升级方法参考:《centos7 docker升级到最新稳定版本》centos7 docker升级到最新稳定版本_whatday的专栏-CSDN博客_centos7哪个版本稳定

以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 在容器外执行某个容器内的某个命令》docker 在容器外执行某个容器内的某个命令_whatday的专栏-CSDN博客_docker 外部执行命令

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值