在 windows 中使用 docker 需要安装 docker toolbox,docker toolbox 提供一个 virtualbox 的 linux 虚拟机,然后在 linux 中安装 docker,在 linux 虚拟机中使用 docker 命令行。在 windows shell 下使用 docker-machine 命令行。
我们构建了 default 虚拟机后,启动虚拟机
docker-machine start default
登录到 linux
docker-machine ssh default
登录之后写一个 Dockerfile 构建 container 镜像
# Dockerfile for `wyrover-python`.
#
# This Dockerfile contains a development environment for doing all of the
# necessary python work.
FROM python:2.7.12-wheezy
MAINTAINER wyrover@gmail.com
RUN apt-get update && \
apt-get install -y python-numpy \
python-scipy \
python-matplotlib \
ipython \
python-pandas \
python-sympy \
python-nose \
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mkdir -p /app
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
CMD ["bash"]
这个 Dockerfile 虽然通过 apt-get intall
安装了一些库,但是这些库过于陈旧,还得使用 pip install
更新安装相关的 python 库。 这个 container 默认启动 bash,稍后我们再通过命令行启动 jupyter(notebook)。
requirements.txt
jinja2
influxdb
pyyaml
numpy
scipy
pandas
matplotlib
scikit-learn
scikit-image
mock
jupyter
xlrd
xlwt
openpyxl
xlutils
lxml
html5lib
tushare
beautifulsoup4
scrapy
poster
selenium
mysql-python
pysqlite
pymongo
flask
requests
jieba
pygal
chaco
启动容器, 将当前目录下的 app 目录映射到容器 /app
目录下, 并映射容器端口到虚拟机端口 8888
,虚拟机 IP 通常为 192.168.99.100
。稍后通过 http://192.168.99.100:8888/
来访问 notebook。
docker run -p 8888:8888 -v $(pwd)/app:/app -e PASSWORD=admin -i -t wyrover/python
启动容器后,我们已经在容器的 bash 下,运行 notebook
jupyter notebook --no-browser --port 8888 --ip=*
打开 http://192.168.99.100:8888/ 访问。
在 notebook 编写代码,如果还想将 windows 的目录挂载到容器中,请看 在 windows 下用 docker toolbox 搭建开发环境
量化计算环境也是 python 科学计算环境,要安装的包有
- numpy 矩阵运算
- scipy 科学计算
- pandas 金融计算
- matplotlib 图表
- xlrd 支持 pandas 读写 excel 文件
- tushare 中国金融市场数据获取支持库
如果还想再安装其他库,启动容器后,在容器 bash 下 安装即可,然后提交保存容器。
安装个机器学习库
pip install scikit-learn
在 linux 虚拟机下查询运行的 docker container 实例。
docker@default:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f13614c2cd85 wyrover/python "bash" 6 hours ago Up 6 hours 0.0.0.0:8888->8888/tcp gigantic_swanson
提交保存 container 镜像
docker commit f13614c2cd85 wyrover/python
国内几个在线的量化计算环境好像都是在 notebook 的基础上搭建的,提供了 A 股的市场数据,并且用 pandas 之类的库来计算数据,跑回归测试。
国内的几个在线量化平台
几本书
- Learning pandas
- Mastering pandas
- Mastering pandas for Finance
- Python for Data Analysis
- Python Data Analysis Cookbook
- pandas 文档
- numpy
- scipy
- matplotlib
- scikit-learn
- jupyter