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] [镜像]

 

posted @ 2017-12-18 18:02  sulerzh  阅读(522)  评论(0编辑  收藏  举报