下面是我根据参考文献来实践, 使用IPython调用Docker容器的记录, 仅供参考:
首先需要安装好IPython(可以参见前面的博客文章)和docker-py:
sudo pip install docker-py
然后安装Docker:
sudo apt-get install docker.io
注意:
考虑到权限问题,下面使用docker命令行时,建议使用sudo docker 而非docker
将docker.io更名为docker, 同时查看它的版本信息和socket信息:
alias docker='docker.io'
docker version
ls /var/run/docker.sock
pull镜像
然后我们下载busybox镜像.
busybox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,busybox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
sudo docker pull busybox
现在我们有了docker-py , IPython, Docker 和 busybox 镜像,我们就能建立一些容器。启动一个IPython ,导入docker模块,并建立一个连接到Docker
现在我们已经连接到Docker。
IPython使用tab键来补全的。 如果 输入 “c.” 然后按下tab键,IPython会显示Docker连接对象所有的方法和属性。
让我们来看下c.images 我输入一个 “?”在c.之后,ipython 会提供这个对象的详细信息。
获取busybox 镜像。
建立一个容器, 在其中添加一个可以将要运行的命令,比如这里用的是”env”命令。
使用ID来启动这个容器
我们可以检查日志,应该可以看到当容器创建的时候 ,我们配置的”env”命令的输出结果,参见下面的图示:
假如我们使用Docker的命令行方式, 我们也可以类似的结果:
sudo docker run busybox env
但是很遗憾, docker-py并没有run选项, 我们不得不创建一个容器container, 将要运行的命令包装其中再运行.
另一个容器例子
下面再举个例子, 这里对容器的引用方式有区别, 注意比较.
如果你还没有使用过busybox镜像,我建议你使用下。
至此, 我们使用IPython和docker-py模块通过创建Docker container的方法玩转了Docker这一引人入胜的新技术, 加深了我们对Docker的了解.
参考文献
[1].http://serverascode.com/2014/06/05/docker-python.html
[2].http://www.open-open.com/lib/view/open1410416979898.html