docker in docker

Posted sulerzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 in docker的主要内容,如果未能解决你的问题,请参考以下文章

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

Docker-in-Docker: Jenkins CI 内部如何运行 docker

Docker 容器网络与 Docker-in-Docker