Docker 是雲原生時代的核心技術。透過 docker-py 程式庫,我們能在 Python 腳本或 IPython 互動環境中建立、管理容器。本文以 Ubuntu 14.04 為例,示範安裝流程與基本操作。
$ pip install docker-py
$ sudo apt-get install ipython docker.io
$ alias docker='docker.io' # Ubuntu 14.04 套件名為 docker.io
$ docker pull busybox # 取得輕量級測試映像
$ ipython
In [1]: import docker
In [2]: c = docker.Client(base_url='unix://var/run/docker.sock', version='1.9', timeout=10)
輸入 c. 按 Tab 可列出所有方法;c.images? 顯示文件字串。
In [6]: c.images(name="busybox")
Out[6]: [{u'Id': u'71e18d715071...', u'RepoTags': [u'busybox:latest'], ...}, ...]
In [8]: container = c.create_container(image="busybox", command="env")
Out[8]: {u'Id': u'584459a09e6d...', u'Warnings': None}
In [9]: c.start(container=container['Id'])
In [11]: c.logs(container=container['Id'])
Out[11]: 'HOME=/\nPATH=/usr/local/sbin:...\nHOSTNAME=584459a09e6d\n'
對應 CLI:docker run busybox env。
In [17]: busybox = c.create_container(image="busybox", command="echo hi")
In [19]: c.start(busybox.get("Id"))
In [20]: c.logs(busybox.get("Id"))
Out[20]: 'hi\n'
docker-py 無 run 一鍵指令,需先 create_container 再 start。busybox 或 debian:jessie(約 120 MB)作為基底映像。結合 IPython 的自動完成與文件檢視,配合 docker-py 豐富的 API,可快速原型開發容器編排、CI/CD 整合等自動化流程。