如何从容器内部执行宿主机的docker命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从容器内部执行宿主机的docker命令相关的知识,希望对你有一定的参考价值。

参考技术A 如果之前为docker创建过用户,则需要执行以下命令,没有的话直接跳过

docker in docker

docker run --rm可以从一个镜像启动容器,并在容器执行完成后自动删除,这在计算任务中非常有用。

例如,我们通过以下步骤完成计算任务容器的启动:

1 将输入数据通过卷挂载方式连接到计算任务容器;

2 容器启动,执行命令启动工具;

3 工具加载数据进行计算,并将结果写入到数据卷;

4 计算完成,容器销毁。

当我们的任务都是基于容器环境时,启动上述步骤的docker命令是在容器内部执行的,我们可以通过挂在宿主机的docker命令来实现该操作:

1 挂在docker命令工具:

  {caltool}:
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /root/.docker/config.json:/root/.docker/config.json

其中,caltool是我们的计算任务工具服务的名称,挂在宿主机的docker.sock/docker和config.json,假定docker在宿主机和容器中都是root用户。

2 在容器构建时,安装docker运行依赖库libltdl-dev:

in container‘s Dockerfile
    RUN apt-get update && apt install -y libltdl-dev

3 在容器中调用容器执行任务:

docker run --rm  -v [调度容器数据目录/data]:[计算工具容器数据目录/mnt/work] [镜像]

 

以上是关于如何从容器内部执行宿主机的docker命令的主要内容,如果未能解决你的问题,请参考以下文章

docker容器时间与宿主机时间不一致问题总结

docker下容器怎么执行命令

Docker 从入门到实践系列三 - Docker 常用命令

Docker 从入门到实践系列三 - Docker 常用命令

docker in docker

Docker网络与Iptables浅析