docker虚拟化之订制python环境

前面我们讲了python爬虫用到的工具及模块:phantomjs、beautifulsoup4、selenium、lxml等,如果我们想随时随地用到这个已经搭建好的python环境,这就有两个方案:一是利用vagrant打包python环境的box;二是创建一个python环境的docker镜像。

在此我们介绍下第二种方案,我们利用dockerfile直接创建docker镜像即可,当然前提是你能运行docker环境。

我们使用的是ubuntu16.04
1.安装docker

wget -qO- https://get.docker.com/ | sh

2.创建目录并创建python需要安装的模块

mkdir -p /docker/python
vim requirements.txt
beautifulsoup4
lxml
Selenium

3.创建Dockerfile文件

FROM ubuntu
MAINTAINER yanggd
RUN mkdir -p /app
WORKDIR /app
ADD requirements.txt requirements.txt
RUN apt-get update \
    #安装phantomjs依赖
    && apt-get install -y build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev libx11-dev libxext-dev python wget vim\
    #安装最新版本pip
    && wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
    && python /tmp/get-pip.py \
    && rm /tmp/get-pip.py \
    #安装python模块beautifulsoup4 selenium lxml
    && pip install -r requirements.txt \
    && wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O /tmp/phantomjs.tar.bz2 \
    && tar -jxvf /tmp/phantomjs.tar.bz2 -C /usr/local/ \
    && ln -s /usr/local/phantomjs-2.1.1-linux-x86_64 /usr/local/phantomjs \
    && rm /tmp/phantomjs.tar.bz2 \
    #安装python模块mysqldb
    && apt-get install -y python-dev libmysqlclient-dev \
    && pip install MySQL-python

注意:
(1)安装python mysqldb连接数据模块时,一定要安装python-dev libmysqlclient-dev,否则会出现mysql_config等错误;可以避免先安装 mysql的麻烦。
(2)dockerfile中的ADD COPY命令是添加当前目录下的文件到docker中的当前目录WORKDIR /app 下;另外若添加的是tar.gz等压缩文件时,会在docker中被认为是一个目录,而不是压缩文件,因此不可以在后续命令中用tar解压;但是wget的tar.gz会被认为是压缩文件,可以用tar解压

4.建立镜像

docker build -t ubuntu/python2.7 .

“.”表示Dockerfile所在当前目录,这样我们就创建了一个ubuntu/python2.7镜像

root@test ~/docker/python# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/python2.7    latest              794e1613fe03        7 hours ago         741.2 MB
mysql               latest              b7dc06006192        2 weeks ago         385.6 MB
python              2.7                 4c5f5839b372        3 weeks ago         675.3 MB
ubuntu              latest              bd3d4369aebc        3 weeks ago         126.6 MB

创建完成后我们就可以在docker中编写python爬虫了:

docker run -it ubuntu/python2.7 /bin/bash

注意:
此时虽然安装了python爬虫的基础环境,但是有的工具默认是没有安装的如wget ping 等,我们在docker中安装这些工具后一定要docker commit下,否则退出docker重新登陆后,原来安装的工具就不存在了,需要重新安装,是多么蛋疼的啊。

总结:
虽然我们可以直接基于python:2.7镜像建立一个适合我们用的python环境,而且相对于ubuntu镜像建立更加轻量,但是毕竟python:2.7基础只有python,无法安装phantomjs工具及依赖,这我已经测试。
当然我们也可以通过vagrant的box来随时搭建python环境,但是这相对与docker比较重量级,见仁见智吧。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值